<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-2"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Cmm.Info</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-3"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#mkEmptyContInfoTable"><span class="hs-identifier">mkEmptyContInfoTable</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-4"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#cmmToRawCmm"><span class="hs-identifier">cmmToRawCmm</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-5"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#srtEscape"><span class="hs-identifier">srtEscape</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-6"></span><span>
</span><span id="line-7"></span><span>  </span><span class="hs-comment">-- info table accessors</span><span>
</span><span id="line-8"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#closureInfoPtr"><span class="hs-identifier">closureInfoPtr</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-9"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#entryCode"><span class="hs-identifier">entryCode</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-10"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#getConstrTag"><span class="hs-identifier">getConstrTag</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-11"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#cmmGetClosureType"><span class="hs-identifier">cmmGetClosureType</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-12"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#infoTable"><span class="hs-identifier">infoTable</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-13"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#infoTableConstrTag"><span class="hs-identifier">infoTableConstrTag</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-14"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#infoTableSrtBitmap"><span class="hs-identifier">infoTableSrtBitmap</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-15"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#infoTableClosureType"><span class="hs-identifier">infoTableClosureType</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-16"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#infoTablePtrs"><span class="hs-identifier">infoTablePtrs</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-17"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#infoTableNonPtrs"><span class="hs-identifier">infoTableNonPtrs</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-18"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#funInfoTable"><span class="hs-identifier">funInfoTable</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-19"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#funInfoArity"><span class="hs-identifier">funInfoArity</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-20"></span><span>
</span><span id="line-21"></span><span>  </span><span class="hs-comment">-- info table sizes and offsets</span><span>
</span><span id="line-22"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#stdInfoTableSizeW"><span class="hs-identifier">stdInfoTableSizeW</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-23"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#fixedInfoTableSizeW"><span class="hs-identifier">fixedInfoTableSizeW</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-24"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#profInfoTableSizeW"><span class="hs-identifier">profInfoTableSizeW</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-25"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#maxStdInfoTableSizeW"><span class="hs-identifier">maxStdInfoTableSizeW</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-26"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#maxRetInfoTableSizeW"><span class="hs-identifier">maxRetInfoTableSizeW</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-27"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#stdInfoTableSizeB"><span class="hs-identifier">stdInfoTableSizeB</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-28"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#conInfoTableSizeB"><span class="hs-identifier">conInfoTableSizeB</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-29"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#stdSrtBitmapOffset"><span class="hs-identifier">stdSrtBitmapOffset</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-30"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#stdClosureTypeOffset"><span class="hs-identifier">stdClosureTypeOffset</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-31"></span><span>  </span><span class="annot"><a href="GHC.Cmm.Info.html#stdPtrsOffset"><span class="hs-identifier">stdPtrsOffset</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Info.html#stdNonPtrsOffset"><span class="hs-identifier">stdNonPtrsOffset</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-32"></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-36"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-37"></span><span>
</span><span id="line-38"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.html"><span class="hs-identifier">GHC.Cmm</span></a></span><span>
</span><span id="line-39"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html"><span class="hs-identifier">GHC.Cmm.Utils</span></a></span><span>
</span><span id="line-40"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html"><span class="hs-identifier">GHC.Cmm.CLabel</span></a></span><span>
</span><span id="line-41"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html"><span class="hs-identifier">GHC.Runtime.Heap.Layout</span></a></span><span>
</span><span id="line-42"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.Bitmap.html"><span class="hs-identifier">GHC.Data.Bitmap</span></a></span><span>
</span><span id="line-43"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.Stream.html"><span class="hs-identifier">GHC.Data.Stream</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Data.Stream.html#Stream"><span class="hs-identifier">Stream</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-44"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="GHC.Data.Stream.html"><span class="hs-identifier">GHC.Data.Stream</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">Stream</span></span><span>
</span><span id="line-45"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Collections.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Collections</span></a></span><span>
</span><span id="line-46"></span><span>
</span><span id="line-47"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#"><span class="hs-identifier">GHC.Platform</span></a></span><span>
</span><span id="line-48"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.Maybe.html"><span class="hs-identifier">GHC.Data.Maybe</span></a></span><span>
</span><span id="line-49"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html"><span class="hs-identifier">GHC.Driver.Session</span></a></span><span>
</span><span id="line-50"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Error.html"><span class="hs-identifier">GHC.Utils.Error</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Utils.Error.html#withTimingSilent"><span class="hs-identifier">withTimingSilent</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-51"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Panic.html"><span class="hs-identifier">GHC.Utils.Panic</span></a></span><span>
</span><span id="line-52"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Supply.html"><span class="hs-identifier">GHC.Types.Unique.Supply</span></a></span><span>
</span><span id="line-53"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Monad.html"><span class="hs-identifier">GHC.Utils.Monad</span></a></span><span>
</span><span id="line-54"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Misc.html"><span class="hs-identifier">GHC.Utils.Misc</span></a></span><span>
</span><span id="line-55"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-56"></span><span>
</span><span id="line-57"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.html#"><span class="hs-identifier">Data.ByteString</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Internal.html#ByteString"><span class="hs-identifier">ByteString</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-58"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Bits.html#"><span class="hs-identifier">Data.Bits</span></a></span><span>
</span><span id="line-59"></span><span>
</span><span id="line-60"></span><span class="hs-comment">-- When we split at proc points, we need an empty info table.</span><span>
</span><span id="line-61"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkEmptyContInfoTable"><span class="hs-identifier hs-type">mkEmptyContInfoTable</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmInfoTable"><span class="hs-identifier hs-type">CmmInfoTable</span></a></span><span>
</span><span id="line-62"></span><span id="mkEmptyContInfoTable"><span class="annot"><span class="annottext">mkEmptyContInfoTable :: CLabel -&gt; CmmInfoTable
</span><a href="GHC.Cmm.Info.html#mkEmptyContInfoTable"><span class="hs-identifier hs-var hs-var">mkEmptyContInfoTable</span></a></span></span><span> </span><span id="local-6989586621681026896"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026896"><span class="hs-identifier hs-var">info_lbl</span></a></span></span><span>
</span><span id="line-63"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmInfoTable :: CLabel
-&gt; SMRep
-&gt; ProfilingInfo
-&gt; Maybe CLabel
-&gt; Maybe (Id, CostCentreStack)
-&gt; CmmInfoTable
</span><a href="GHC.Cmm.html#CmmInfoTable"><span class="hs-identifier hs-type">CmmInfoTable</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cit_lbl :: CLabel
</span><a href="GHC.Cmm.html#cit_lbl"><span class="hs-identifier hs-var">cit_lbl</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026896"><span class="hs-identifier hs-var">info_lbl</span></a></span><span>
</span><span id="line-64"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cit_rep :: SMRep
</span><a href="GHC.Cmm.html#cit_rep"><span class="hs-identifier hs-var">cit_rep</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Bool] -&gt; SMRep
</span><a href="GHC.Runtime.Heap.Layout.html#mkStackRep"><span class="hs-identifier hs-var">mkStackRep</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-65"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cit_prof :: ProfilingInfo
</span><a href="GHC.Cmm.html#cit_prof"><span class="hs-identifier hs-var">cit_prof</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ProfilingInfo
</span><a href="GHC.Cmm.html#NoProfilingInfo"><span class="hs-identifier hs-var">NoProfilingInfo</span></a></span><span>
</span><span id="line-66"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cit_srt :: Maybe CLabel
</span><a href="GHC.Cmm.html#cit_srt"><span class="hs-identifier hs-var">cit_srt</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe CLabel
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-67"></span><span>                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cit_clo :: Maybe (Id, CostCentreStack)
</span><a href="GHC.Cmm.html#cit_clo"><span class="hs-identifier hs-var">cit_clo</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe (Id, CostCentreStack)
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-68"></span><span>
</span><span id="line-69"></span><span id="local-6989586621681027129"><span class="annot"><a href="GHC.Cmm.Info.html#cmmToRawCmm"><span class="hs-identifier hs-type">cmmToRawCmm</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Data.Stream.html#Stream"><span class="hs-identifier hs-type">Stream</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmGroupSRTs"><span class="hs-identifier hs-type">CmmGroupSRTs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681027129"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-70"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Data.Stream.html#Stream"><span class="hs-identifier hs-type">Stream</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="annot"><a href="GHC.Cmm.html#RawCmmGroup"><span class="hs-identifier hs-type">RawCmmGroup</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681027129"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-71"></span><span id="cmmToRawCmm"><span class="annot"><span class="annottext">cmmToRawCmm :: forall a.
DynFlags
-&gt; Stream IO CmmGroupSRTs a -&gt; IO (Stream IO RawCmmGroup a)
</span><a href="GHC.Cmm.Info.html#cmmToRawCmm"><span class="hs-identifier hs-var hs-var">cmmToRawCmm</span></a></span></span><span> </span><span id="local-6989586621681026876"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026876"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026875"><span class="annot"><span class="annottext">Stream IO CmmGroupSRTs a
</span><a href="#local-6989586621681026875"><span class="hs-identifier hs-var">cmms</span></a></span></span><span>
</span><span id="line-72"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span class="hs-special">{</span><span> </span><span id="local-6989586621681026874"><span class="annot"><span class="annottext">UniqSupply
</span><a href="#local-6989586621681026874"><span class="hs-identifier hs-var">uniqs</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Char -&gt; IO UniqSupply
</span><a href="GHC.Types.Unique.Supply.html#mkSplitUniqSupply"><span class="hs-identifier hs-var">mkSplitUniqSupply</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'i'</span></span><span>
</span><span id="line-73"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="hs-keyword">let</span><span> </span><span class="annot"><a href="#local-6989586621681026872"><span class="hs-identifier hs-type">do_one</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Supply.html#UniqSupply"><span class="hs-identifier hs-type">UniqSupply</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#CmmDeclSRTs"><span class="hs-identifier hs-type">CmmDeclSRTs</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Unique.Supply.html#UniqSupply"><span class="hs-identifier hs-type">UniqSupply</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#RawCmmDecl"><span class="hs-identifier hs-type">RawCmmDecl</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-74"></span><span>             </span><span id="local-6989586621681026872"><span class="annot"><span class="annottext">do_one :: UniqSupply -&gt; CmmGroupSRTs -&gt; IO (UniqSupply, RawCmmGroup)
</span><a href="#local-6989586621681026872"><span class="hs-identifier hs-var hs-var">do_one</span></a></span></span><span> </span><span id="local-6989586621681026870"><span class="annot"><span class="annottext">UniqSupply
</span><a href="#local-6989586621681026870"><span class="hs-identifier hs-var">uniqs</span></a></span></span><span> </span><span id="local-6989586621681026869"><span class="annot"><span class="annottext">CmmGroupSRTs
</span><a href="#local-6989586621681026869"><span class="hs-identifier hs-var">cmm</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-75"></span><span>               </span><span class="hs-comment">-- NB. strictness fixes a space leak.  DO NOT REMOVE.</span><span>
</span><span id="line-76"></span><span>               </span><span class="annot"><span class="annottext">DynFlags
-&gt; SDoc
-&gt; ((UniqSupply, RawCmmGroup) -&gt; ())
-&gt; IO (UniqSupply, RawCmmGroup)
-&gt; IO (UniqSupply, RawCmmGroup)
forall (m :: * -&gt; *) a.
MonadIO m =&gt;
DynFlags -&gt; SDoc -&gt; (a -&gt; ()) -&gt; m a -&gt; m a
</span><a href="GHC.Utils.Error.html#withTimingSilent"><span class="hs-identifier hs-var">withTimingSilent</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026876"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Cmm -&gt; Raw Cmm&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-77"></span><span>                                </span><span class="annot"><span class="annottext">(UniqSupply, RawCmmGroup) -&gt; ()
forall {t :: * -&gt; *} {a} {a}. Foldable t =&gt; (a, t a) -&gt; ()
</span><a href="#local-6989586621681026867"><span class="hs-identifier hs-var">forceRes</span></a></span><span> </span><span class="annot"><span class="annottext">(IO (UniqSupply, RawCmmGroup) -&gt; IO (UniqSupply, RawCmmGroup))
-&gt; IO (UniqSupply, RawCmmGroup) -&gt; IO (UniqSupply, RawCmmGroup)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-78"></span><span>                 </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">UniqSupply -&gt; UniqSM RawCmmGroup -&gt; (RawCmmGroup, UniqSupply)
forall a. UniqSupply -&gt; UniqSM a -&gt; (a, UniqSupply)
</span><a href="GHC.Types.Unique.Supply.html#initUs"><span class="hs-identifier hs-var">initUs</span></a></span><span> </span><span class="annot"><span class="annottext">UniqSupply
</span><a href="#local-6989586621681026870"><span class="hs-identifier hs-var">uniqs</span></a></span><span> </span><span class="annot"><span class="annottext">(UniqSM RawCmmGroup -&gt; (RawCmmGroup, UniqSupply))
-&gt; UniqSM RawCmmGroup -&gt; (RawCmmGroup, UniqSupply)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmDeclSRTs -&gt; UniqSM RawCmmGroup)
-&gt; CmmGroupSRTs -&gt; UniqSM RawCmmGroup
forall (m :: * -&gt; *) a b. Monad m =&gt; (a -&gt; m [b]) -&gt; [a] -&gt; m [b]
</span><a href="GHC.Utils.Monad.html#concatMapM"><span class="hs-identifier hs-var">concatMapM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmDeclSRTs -&gt; UniqSM RawCmmGroup
</span><a href="GHC.Cmm.Info.html#mkInfoTable"><span class="hs-identifier hs-var">mkInfoTable</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026876"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmGroupSRTs
</span><a href="#local-6989586621681026869"><span class="hs-identifier hs-var">cmm</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-79"></span><span>                   </span><span class="hs-special">(</span><span id="local-6989586621681026863"><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026863"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621681026862"><span class="annot"><span class="annottext">UniqSupply
</span><a href="#local-6989586621681026862"><span class="hs-identifier hs-var">uniqs'</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">(UniqSupply, RawCmmGroup) -&gt; IO (UniqSupply, RawCmmGroup)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">UniqSupply
</span><a href="#local-6989586621681026862"><span class="hs-identifier hs-var">uniqs'</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026863"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-80"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="annot"><span class="annottext">Stream IO RawCmmGroup a -&gt; IO (Stream IO RawCmmGroup a)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(UniqSupply, a) -&gt; a
forall a b. (a, b) -&gt; b
</span><a href="../../base/src/Data.Tuple.html#snd"><span class="hs-identifier hs-var">snd</span></a></span><span> </span><span class="annot"><span class="annottext">((UniqSupply, a) -&gt; a)
-&gt; Stream IO RawCmmGroup (UniqSupply, a) -&gt; Stream IO RawCmmGroup a
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/Data.Functor.html#%3C%24%3E"><span class="hs-operator hs-var">&lt;$&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">(UniqSupply -&gt; CmmGroupSRTs -&gt; IO (UniqSupply, RawCmmGroup))
-&gt; UniqSupply
-&gt; Stream IO CmmGroupSRTs a
-&gt; Stream IO RawCmmGroup (UniqSupply, a)
forall (m :: * -&gt; *) c a b r.
Monad m =&gt;
(c -&gt; a -&gt; m (c, b)) -&gt; c -&gt; Stream m a r -&gt; Stream m b (c, r)
</span><a href="GHC.Data.Stream.html#mapAccumL_"><span class="hs-identifier hs-var">Stream.mapAccumL_</span></a></span><span> </span><span class="annot"><span class="annottext">UniqSupply -&gt; CmmGroupSRTs -&gt; IO (UniqSupply, RawCmmGroup)
</span><a href="#local-6989586621681026872"><span class="hs-identifier hs-var">do_one</span></a></span><span> </span><span class="annot"><span class="annottext">UniqSupply
</span><a href="#local-6989586621681026874"><span class="hs-identifier hs-var">uniqs</span></a></span><span> </span><span class="annot"><span class="annottext">Stream IO CmmGroupSRTs a
</span><a href="#local-6989586621681026875"><span class="hs-identifier hs-var">cmms</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-81"></span><span>       </span><span class="hs-special">}</span><span>
</span><span id="line-82"></span><span>
</span><span id="line-83"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026867"><span class="annot"><span class="annottext">forceRes :: (a, t a) -&gt; ()
</span><a href="#local-6989586621681026867"><span class="hs-identifier hs-var hs-var">forceRes</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026857"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681026857"><span class="hs-identifier hs-var">uniqs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026856"><span class="annot"><span class="annottext">t a
</span><a href="#local-6989586621681026856"><span class="hs-identifier hs-var">rawcmms</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-84"></span><span>            </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681026857"><span class="hs-identifier hs-var">uniqs</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; () -&gt; ()
</span><span class="hs-operator hs-var">`seq`</span></span><span> </span><span class="annot"><span class="annottext">(a -&gt; () -&gt; ()) -&gt; () -&gt; t a -&gt; ()
forall (t :: * -&gt; *) a b.
Foldable t =&gt;
(a -&gt; b -&gt; b) -&gt; b -&gt; t a -&gt; b
</span><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621681026854"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681026854"><span class="hs-identifier hs-var">decl</span></a></span></span><span> </span><span id="local-6989586621681026853"><span class="annot"><span class="annottext">()
</span><a href="#local-6989586621681026853"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681026854"><span class="hs-identifier hs-var">decl</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; () -&gt; ()
</span><span class="hs-operator hs-var">`seq`</span></span><span> </span><span class="annot"><span class="annottext">()
</span><a href="#local-6989586621681026853"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">t a
</span><a href="#local-6989586621681026856"><span class="hs-identifier hs-var">rawcmms</span></a></span><span>
</span><span id="line-85"></span><span>
</span><span id="line-86"></span><span class="hs-comment">-- Make a concrete info table, represented as a list of CmmStatic</span><span>
</span><span id="line-87"></span><span class="hs-comment">-- (it can't be simply a list of Word, because the SRT field is</span><span>
</span><span id="line-88"></span><span class="hs-comment">-- represented by a label+offset expression).</span><span>
</span><span id="line-89"></span><span class="hs-comment">--</span><span>
</span><span id="line-90"></span><span class="hs-comment">-- With tablesNextToCode, the layout is</span><span>
</span><span id="line-91"></span><span class="hs-comment">--      &lt;reversed variable part&gt;</span><span>
</span><span id="line-92"></span><span class="hs-comment">--      &lt;normal forward StgInfoTable, but without</span><span>
</span><span id="line-93"></span><span class="hs-comment">--              an entry point at the front&gt;</span><span>
</span><span id="line-94"></span><span class="hs-comment">--      &lt;code&gt;</span><span>
</span><span id="line-95"></span><span class="hs-comment">--</span><span>
</span><span id="line-96"></span><span class="hs-comment">-- Without tablesNextToCode, the layout of an info table is</span><span>
</span><span id="line-97"></span><span class="hs-comment">--      &lt;entry label&gt;</span><span>
</span><span id="line-98"></span><span class="hs-comment">--      &lt;normal forward rest of StgInfoTable&gt;</span><span>
</span><span id="line-99"></span><span class="hs-comment">--      &lt;forward variable part&gt;</span><span>
</span><span id="line-100"></span><span class="hs-comment">--</span><span>
</span><span id="line-101"></span><span class="hs-comment">--      See includes/rts/storage/InfoTables.h</span><span>
</span><span id="line-102"></span><span class="hs-comment">--</span><span>
</span><span id="line-103"></span><span class="hs-comment">-- For return-points these are as follows</span><span>
</span><span id="line-104"></span><span class="hs-comment">--</span><span>
</span><span id="line-105"></span><span class="hs-comment">-- Tables next to code:</span><span>
</span><span id="line-106"></span><span class="hs-comment">--</span><span>
</span><span id="line-107"></span><span class="hs-comment">--                      &lt;srt slot&gt;</span><span>
</span><span id="line-108"></span><span class="hs-comment">--                      &lt;standard info table&gt;</span><span>
</span><span id="line-109"></span><span class="hs-comment">--      ret-addr --&gt;    &lt;entry code (if any)&gt;</span><span>
</span><span id="line-110"></span><span class="hs-comment">--</span><span>
</span><span id="line-111"></span><span class="hs-comment">-- Not tables-next-to-code:</span><span>
</span><span id="line-112"></span><span class="hs-comment">--</span><span>
</span><span id="line-113"></span><span class="hs-comment">--      ret-addr --&gt;    &lt;ptr to entry code&gt;</span><span>
</span><span id="line-114"></span><span class="hs-comment">--                      &lt;standard info table&gt;</span><span>
</span><span id="line-115"></span><span class="hs-comment">--                      &lt;srt slot&gt;</span><span>
</span><span id="line-116"></span><span class="hs-comment">--</span><span>
</span><span id="line-117"></span><span class="hs-comment">--  * The SRT slot is only there if there is SRT info to record</span><span>
</span><span id="line-118"></span><span>
</span><span id="line-119"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkInfoTable"><span class="hs-identifier hs-type">mkInfoTable</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmDeclSRTs"><span class="hs-identifier hs-type">CmmDeclSRTs</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Supply.html#UniqSM"><span class="hs-identifier hs-type">UniqSM</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#RawCmmDecl"><span class="hs-identifier hs-type">RawCmmDecl</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-120"></span><span id="mkInfoTable"><span class="annot"><span class="annottext">mkInfoTable :: DynFlags -&gt; CmmDeclSRTs -&gt; UniqSM RawCmmGroup
</span><a href="GHC.Cmm.Info.html#mkInfoTable"><span class="hs-identifier hs-var hs-var">mkInfoTable</span></a></span></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmData"><span class="hs-identifier hs-type">CmmData</span></a></span><span> </span><span id="local-6989586621681026851"><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681026851"><span class="hs-identifier hs-var">sec</span></a></span></span><span> </span><span id="local-6989586621681026850"><span class="annot"><span class="annottext">RawCmmStatics
</span><a href="#local-6989586621681026850"><span class="hs-identifier hs-var">dat</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">RawCmmGroup -&gt; UniqSM RawCmmGroup
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Section
-&gt; RawCmmStatics
-&gt; GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
forall d h g. Section -&gt; d -&gt; GenCmmDecl d h g
</span><a href="GHC.Cmm.html#CmmData"><span class="hs-identifier hs-var">CmmData</span></a></span><span> </span><span class="annot"><span class="annottext">Section
</span><a href="#local-6989586621681026851"><span class="hs-identifier hs-var">sec</span></a></span><span> </span><span class="annot"><span class="annottext">RawCmmStatics
</span><a href="#local-6989586621681026850"><span class="hs-identifier hs-var">dat</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-121"></span><span>
</span><span id="line-122"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkInfoTable"><span class="hs-identifier hs-var">mkInfoTable</span></a></span><span> </span><span id="local-6989586621681026849"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026849"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026848"><span class="annot"><span class="annottext">proc :: CmmDeclSRTs
</span><a href="#local-6989586621681026848"><span class="hs-identifier hs-var">proc</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmProc"><span class="hs-identifier hs-type">CmmProc</span></a></span><span> </span><span id="local-6989586621681026846"><span class="annot"><span class="annottext">CmmTopInfo
</span><a href="#local-6989586621681026846"><span class="hs-identifier hs-var">infos</span></a></span></span><span> </span><span id="local-6989586621681026845"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026845"><span class="hs-identifier hs-var">entry_lbl</span></a></span></span><span> </span><span id="local-6989586621681026844"><span class="annot"><span class="annottext">[GlobalReg]
</span><a href="#local-6989586621681026844"><span class="hs-identifier hs-var">live</span></a></span></span><span> </span><span id="local-6989586621681026843"><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681026843"><span class="hs-identifier hs-var">blocks</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-123"></span><span>  </span><span class="hs-comment">--</span><span>
</span><span id="line-124"></span><span>  </span><span class="hs-comment">-- in the non-tables-next-to-code case, procs can have at most a</span><span>
</span><span id="line-125"></span><span>  </span><span class="hs-comment">-- single info table associated with the entry label of the proc.</span><span>
</span><span id="line-126"></span><span>  </span><span class="hs-comment">--</span><span>
</span><span id="line-127"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Bool
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformTablesNextToCode"><span class="hs-identifier hs-var hs-var">platformTablesNextToCode</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026849"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-128"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmDeclSRTs -&gt; Maybe CmmInfoTable
forall a (n :: Extensibility -&gt; Extensibility -&gt; *).
GenCmmDecl a CmmTopInfo (GenCmmGraph n) -&gt; Maybe CmmInfoTable
</span><a href="GHC.Cmm.html#topInfoTable"><span class="hs-identifier hs-var">topInfoTable</span></a></span><span> </span><span class="annot"><span class="annottext">CmmDeclSRTs
</span><a href="#local-6989586621681026848"><span class="hs-identifier hs-var">proc</span></a></span><span> </span><span class="hs-keyword">of</span><span>   </span><span class="hs-comment">--  must be at most one</span><span>
</span><span id="line-129"></span><span>      </span><span class="hs-comment">-- no info table</span><span>
</span><span id="line-130"></span><span>      </span><span class="annot"><span class="annottext">Maybe CmmInfoTable
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-131"></span><span>         </span><span class="annot"><span class="annottext">RawCmmGroup -&gt; UniqSM RawCmmGroup
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
-&gt; CLabel
-&gt; [GlobalReg]
-&gt; CmmGraph
-&gt; GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
forall d h g. h -&gt; CLabel -&gt; [GlobalReg] -&gt; g -&gt; GenCmmDecl d h g
</span><a href="GHC.Cmm.html#CmmProc"><span class="hs-identifier hs-var">CmmProc</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
forall (map :: * -&gt; *) a. IsMap map =&gt; map a
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapEmpty"><span class="hs-identifier hs-var">mapEmpty</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026845"><span class="hs-identifier hs-var">entry_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">[GlobalReg]
</span><a href="#local-6989586621681026844"><span class="hs-identifier hs-var">live</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681026843"><span class="hs-identifier hs-var">blocks</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-132"></span><span>
</span><span id="line-133"></span><span>      </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681026837"><span class="annot"><span class="annottext">info :: CmmInfoTable
</span><a href="#local-6989586621681026837"><span class="hs-identifier hs-var">info</span></a></span></span><span class="hs-glyph">@</span><span class="annot"><a href="GHC.Cmm.html#CmmInfoTable"><span class="hs-identifier hs-type">CmmInfoTable</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cit_lbl :: CmmInfoTable -&gt; CLabel
</span><a href="GHC.Cmm.html#cit_lbl"><span class="hs-identifier hs-var">cit_lbl</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621681026836"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026836"><span class="hs-identifier hs-var">info_lbl</span></a></span></span><span> </span><span class="hs-special">}</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-134"></span><span>        </span><span class="hs-special">(</span><span id="local-6989586621681026835"><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026835"><span class="hs-identifier hs-var">top_decls</span></a></span></span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026834"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026834"><span class="hs-identifier hs-var">std_info</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026833"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026833"><span class="hs-identifier hs-var">extra_bits</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span>
</span><span id="line-135"></span><span>             </span><span class="annot"><span class="annottext">DynFlags
-&gt; CmmInfoTable
-&gt; Maybe WordOff
-&gt; UniqSM (RawCmmGroup, InfoTableContents)
</span><a href="GHC.Cmm.Info.html#mkInfoTableContents"><span class="hs-identifier hs-var">mkInfoTableContents</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026849"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmInfoTable
</span><a href="#local-6989586621681026837"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe WordOff
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-136"></span><span>        </span><span class="hs-keyword">let</span><span>
</span><span id="line-137"></span><span>          </span><span id="local-6989586621681026831"><span class="annot"><span class="annottext">rel_std_info :: [CmmLit]
</span><a href="#local-6989586621681026831"><span class="hs-identifier hs-var hs-var">rel_std_info</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmmLit -&gt; CmmLit) -&gt; [CmmLit] -&gt; [CmmLit]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; CmmLit -&gt; CmmLit
</span><a href="GHC.Cmm.Info.html#makeRelativeRefTo"><span class="hs-identifier hs-var">makeRelativeRefTo</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026829"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026836"><span class="hs-identifier hs-var">info_lbl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026834"><span class="hs-identifier hs-var">std_info</span></a></span><span>
</span><span id="line-138"></span><span>          </span><span id="local-6989586621681026828"><span class="annot"><span class="annottext">rel_extra_bits :: [CmmLit]
</span><a href="#local-6989586621681026828"><span class="hs-identifier hs-var hs-var">rel_extra_bits</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmmLit -&gt; CmmLit) -&gt; [CmmLit] -&gt; [CmmLit]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; CmmLit -&gt; CmmLit
</span><a href="GHC.Cmm.Info.html#makeRelativeRefTo"><span class="hs-identifier hs-var">makeRelativeRefTo</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026829"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026836"><span class="hs-identifier hs-var">info_lbl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026833"><span class="hs-identifier hs-var">extra_bits</span></a></span><span>
</span><span id="line-139"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-140"></span><span>        </span><span class="hs-comment">-- Separately emit info table (with the function entry</span><span>
</span><span id="line-141"></span><span>        </span><span class="hs-comment">-- point as first entry) and the entry code</span><span>
</span><span id="line-142"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-143"></span><span>        </span><span class="annot"><span class="annottext">RawCmmGroup -&gt; UniqSM RawCmmGroup
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026835"><span class="hs-identifier hs-var">top_decls</span></a></span><span> </span><span class="annot"><span class="annottext">RawCmmGroup -&gt; RawCmmGroup -&gt; RawCmmGroup
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span>
</span><span id="line-144"></span><span>                </span><span class="hs-special">[</span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
-&gt; CLabel
-&gt; [GlobalReg]
-&gt; CmmGraph
-&gt; GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
forall d h g. h -&gt; CLabel -&gt; [GlobalReg] -&gt; g -&gt; GenCmmDecl d h g
</span><a href="GHC.Cmm.html#CmmProc"><span class="hs-identifier hs-var">CmmProc</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
forall (map :: * -&gt; *) a. IsMap map =&gt; map a
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapEmpty"><span class="hs-identifier hs-var">mapEmpty</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026845"><span class="hs-identifier hs-var">entry_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">[GlobalReg]
</span><a href="#local-6989586621681026844"><span class="hs-identifier hs-var">live</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681026843"><span class="hs-identifier hs-var">blocks</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-145"></span><span>                 </span><span class="annot"><span class="annottext">CLabel
-&gt; [CmmLit]
-&gt; GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
forall (raw :: Bool) info stmt.
CLabel -&gt; [CmmLit] -&gt; GenCmmDecl (GenCmmStatics raw) info stmt
</span><a href="GHC.Cmm.Utils.html#mkRODataLits"><span class="hs-identifier hs-var">mkRODataLits</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026836"><span class="hs-identifier hs-var">info_lbl</span></a></span><span>
</span><span id="line-146"></span><span>                    </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-var">CmmLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026845"><span class="hs-identifier hs-var">entry_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; [CmmLit] -&gt; [CmmLit]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026831"><span class="hs-identifier hs-var">rel_std_info</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmLit] -&gt; [CmmLit] -&gt; [CmmLit]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026828"><span class="hs-identifier hs-var">rel_extra_bits</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-147"></span><span>
</span><span id="line-148"></span><span>  </span><span class="hs-comment">--</span><span>
</span><span id="line-149"></span><span>  </span><span class="hs-comment">-- With tables-next-to-code, we can have many info tables,</span><span>
</span><span id="line-150"></span><span>  </span><span class="hs-comment">-- associated with some of the BlockIds of the proc.  For each info</span><span>
</span><span id="line-151"></span><span>  </span><span class="hs-comment">-- table we need to turn it into CmmStatics, and collect any new</span><span>
</span><span id="line-152"></span><span>  </span><span class="hs-comment">-- CmmDecls that arise from doing so.</span><span>
</span><span id="line-153"></span><span>  </span><span class="hs-comment">--</span><span>
</span><span id="line-154"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-155"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-156"></span><span>    </span><span class="hs-special">(</span><span id="local-6989586621681026825"><span class="annot"><span class="annottext">[RawCmmGroup]
</span><a href="#local-6989586621681026825"><span class="hs-identifier hs-var">top_declss</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026824"><span class="annot"><span class="annottext">[(Label, RawCmmStatics)]
</span><a href="#local-6989586621681026824"><span class="hs-identifier hs-var">raw_infos</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span>
</span><span id="line-157"></span><span>       </span><span class="annot"><span class="annottext">[(RawCmmGroup, (Label, RawCmmStatics))]
-&gt; ([RawCmmGroup], [(Label, RawCmmStatics)])
forall a b. [(a, b)] -&gt; ([a], [b])
</span><a href="../../base/src/GHC.List.html#unzip"><span class="hs-identifier hs-var">unzip</span></a></span><span> </span><span class="annot"><span class="annottext">([(RawCmmGroup, (Label, RawCmmStatics))]
 -&gt; ([RawCmmGroup], [(Label, RawCmmStatics)]))
-&gt; UniqSM [(RawCmmGroup, (Label, RawCmmStatics))]
-&gt; UniqSM ([RawCmmGroup], [(Label, RawCmmStatics)])
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-operator hs-var">`fmap`</span></a></span><span> </span><span class="annot"><span class="annottext">((Label, CmmInfoTable)
 -&gt; UniqSM (RawCmmGroup, (Label, RawCmmStatics)))
-&gt; [(Label, CmmInfoTable)]
-&gt; UniqSM [(RawCmmGroup, (Label, RawCmmStatics))]
forall (t :: * -&gt; *) (m :: * -&gt; *) a b.
(Traversable t, Monad m) =&gt;
(a -&gt; m b) -&gt; t a -&gt; m (t b)
</span><a href="../../base/src/Data.Traversable.html#mapM"><span class="hs-identifier hs-var">mapM</span></a></span><span> </span><span class="annot"><span class="annottext">(Label, CmmInfoTable)
-&gt; UniqSM (RawCmmGroup, (Label, RawCmmStatics))
forall {a} {rawOnly :: Bool}.
(a, CmmInfoTable)
-&gt; UniqSM (RawCmmGroup, (a, GenCmmStatics rawOnly))
</span><a href="#local-6989586621681026821"><span class="hs-identifier hs-var">do_one_info</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LabelMap CmmInfoTable -&gt; [(KeyOf LabelMap, CmmInfoTable)]
forall (map :: * -&gt; *) a. IsMap map =&gt; map a -&gt; [(KeyOf map, a)]
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapToList"><span class="hs-identifier hs-var">mapToList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmTopInfo -&gt; LabelMap CmmInfoTable
</span><a href="GHC.Cmm.html#info_tbls"><span class="hs-identifier hs-var hs-var">info_tbls</span></a></span><span> </span><span class="annot"><span class="annottext">CmmTopInfo
</span><a href="#local-6989586621681026846"><span class="hs-identifier hs-var">infos</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-158"></span><span>    </span><span class="annot"><span class="annottext">RawCmmGroup -&gt; UniqSM RawCmmGroup
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[RawCmmGroup] -&gt; RawCmmGroup
forall (t :: * -&gt; *) a. Foldable t =&gt; t [a] -&gt; [a]
</span><a href="../../base/src/Data.Foldable.html#concat"><span class="hs-identifier hs-var">concat</span></a></span><span> </span><span class="annot"><span class="annottext">[RawCmmGroup]
</span><a href="#local-6989586621681026825"><span class="hs-identifier hs-var">top_declss</span></a></span><span> </span><span class="annot"><span class="annottext">RawCmmGroup -&gt; RawCmmGroup -&gt; RawCmmGroup
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span>
</span><span id="line-159"></span><span>            </span><span class="hs-special">[</span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
-&gt; CLabel
-&gt; [GlobalReg]
-&gt; CmmGraph
-&gt; GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
forall d h g. h -&gt; CLabel -&gt; [GlobalReg] -&gt; g -&gt; GenCmmDecl d h g
</span><a href="GHC.Cmm.html#CmmProc"><span class="hs-identifier hs-var">CmmProc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[(KeyOf LabelMap, RawCmmStatics)] -&gt; LabelMap RawCmmStatics
forall (map :: * -&gt; *) a. IsMap map =&gt; [(KeyOf map, a)] -&gt; map a
</span><a href="GHC.Cmm.Dataflow.Collections.html#mapFromList"><span class="hs-identifier hs-var">mapFromList</span></a></span><span> </span><span class="annot"><span class="annottext">[(KeyOf LabelMap, RawCmmStatics)]
[(Label, RawCmmStatics)]
</span><a href="#local-6989586621681026824"><span class="hs-identifier hs-var">raw_infos</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026845"><span class="hs-identifier hs-var">entry_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">[GlobalReg]
</span><a href="#local-6989586621681026844"><span class="hs-identifier hs-var">live</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681026843"><span class="hs-identifier hs-var">blocks</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-160"></span><span>
</span><span id="line-161"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-162"></span><span>   </span><span id="local-6989586621681026829"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026829"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026849"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-163"></span><span>   </span><span id="local-6989586621681026821"><span class="annot"><span class="annottext">do_one_info :: (a, CmmInfoTable)
-&gt; UniqSM (RawCmmGroup, (a, GenCmmStatics rawOnly))
</span><a href="#local-6989586621681026821"><span class="hs-identifier hs-var hs-var">do_one_info</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026814"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681026814"><span class="hs-identifier hs-var">lbl</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621681026813"><span class="annot"><span class="annottext">CmmInfoTable
</span><a href="#local-6989586621681026813"><span class="hs-identifier hs-var">itbl</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-164"></span><span>     </span><span class="hs-special">(</span><span id="local-6989586621681026812"><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026812"><span class="hs-identifier hs-var">top_decls</span></a></span></span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026811"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026811"><span class="hs-identifier hs-var">std_info</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026810"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026810"><span class="hs-identifier hs-var">extra_bits</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span>
</span><span id="line-165"></span><span>         </span><span class="annot"><span class="annottext">DynFlags
-&gt; CmmInfoTable
-&gt; Maybe WordOff
-&gt; UniqSM (RawCmmGroup, InfoTableContents)
</span><a href="GHC.Cmm.Info.html#mkInfoTableContents"><span class="hs-identifier hs-var">mkInfoTableContents</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026849"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmInfoTable
</span><a href="#local-6989586621681026813"><span class="hs-identifier hs-var">itbl</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe WordOff
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-166"></span><span>     </span><span class="hs-keyword">let</span><span>
</span><span id="line-167"></span><span>        </span><span id="local-6989586621681026809"><span class="annot"><span class="annottext">info_lbl :: CLabel
</span><a href="#local-6989586621681026809"><span class="hs-identifier hs-var hs-var">info_lbl</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmInfoTable -&gt; CLabel
</span><a href="GHC.Cmm.html#cit_lbl"><span class="hs-identifier hs-var hs-var">cit_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">CmmInfoTable
</span><a href="#local-6989586621681026813"><span class="hs-identifier hs-var">itbl</span></a></span><span>
</span><span id="line-168"></span><span>        </span><span id="local-6989586621681026808"><span class="annot"><span class="annottext">rel_std_info :: [CmmLit]
</span><a href="#local-6989586621681026808"><span class="hs-identifier hs-var hs-var">rel_std_info</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmmLit -&gt; CmmLit) -&gt; [CmmLit] -&gt; [CmmLit]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; CmmLit -&gt; CmmLit
</span><a href="GHC.Cmm.Info.html#makeRelativeRefTo"><span class="hs-identifier hs-var">makeRelativeRefTo</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026829"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026809"><span class="hs-identifier hs-var">info_lbl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026811"><span class="hs-identifier hs-var">std_info</span></a></span><span>
</span><span id="line-169"></span><span>        </span><span id="local-6989586621681026807"><span class="annot"><span class="annottext">rel_extra_bits :: [CmmLit]
</span><a href="#local-6989586621681026807"><span class="hs-identifier hs-var hs-var">rel_extra_bits</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmmLit -&gt; CmmLit) -&gt; [CmmLit] -&gt; [CmmLit]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; CmmLit -&gt; CmmLit
</span><a href="GHC.Cmm.Info.html#makeRelativeRefTo"><span class="hs-identifier hs-var">makeRelativeRefTo</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026829"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026809"><span class="hs-identifier hs-var">info_lbl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026810"><span class="hs-identifier hs-var">extra_bits</span></a></span><span>
</span><span id="line-170"></span><span>     </span><span class="hs-comment">--</span><span>
</span><span id="line-171"></span><span>     </span><span class="annot"><span class="annottext">(RawCmmGroup, (a, GenCmmStatics rawOnly))
-&gt; UniqSM (RawCmmGroup, (a, GenCmmStatics rawOnly))
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026812"><span class="hs-identifier hs-var">top_decls</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621681026814"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; [CmmStatic] -&gt; GenCmmStatics rawOnly
forall (rawOnly :: Bool).
CLabel -&gt; [CmmStatic] -&gt; GenCmmStatics rawOnly
</span><a href="GHC.Cmm.html#CmmStaticsRaw"><span class="hs-identifier hs-var">CmmStaticsRaw</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026809"><span class="hs-identifier hs-var">info_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">([CmmStatic] -&gt; GenCmmStatics rawOnly)
-&gt; [CmmStatic] -&gt; GenCmmStatics rawOnly
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmLit -&gt; CmmStatic) -&gt; [CmmLit] -&gt; [CmmStatic]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmStatic
</span><a href="GHC.Cmm.html#CmmStaticLit"><span class="hs-identifier hs-var">CmmStaticLit</span></a></span><span> </span><span class="annot"><span class="annottext">([CmmLit] -&gt; [CmmStatic]) -&gt; [CmmLit] -&gt; [CmmStatic]
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-172"></span><span>                              </span><span class="annot"><span class="annottext">[CmmLit] -&gt; [CmmLit]
forall a. [a] -&gt; [a]
</span><a href="../../base/src/GHC.List.html#reverse"><span class="hs-identifier hs-var">reverse</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026807"><span class="hs-identifier hs-var">rel_extra_bits</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmLit] -&gt; [CmmLit] -&gt; [CmmLit]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026808"><span class="hs-identifier hs-var">rel_std_info</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-173"></span><span>
</span><span id="line-174"></span><span class="hs-comment">-----------------------------------------------------</span><span>
</span><span id="line-175"></span><span class="hs-keyword">type</span><span> </span><span id="InfoTableContents"><span class="annot"><a href="GHC.Cmm.Info.html#InfoTableContents"><span class="hs-identifier hs-var">InfoTableContents</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">]</span><span>          </span><span class="hs-comment">-- The standard part</span><span>
</span><span id="line-176"></span><span>                         </span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-special">)</span><span>        </span><span class="hs-comment">-- The &quot;extra bits&quot;</span><span>
</span><span id="line-177"></span><span class="hs-comment">-- These Lits have *not* had mkRelativeTo applied to them</span><span>
</span><span id="line-178"></span><span>
</span><span id="line-179"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkInfoTableContents"><span class="hs-identifier hs-type">mkInfoTableContents</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span>
</span><span id="line-180"></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#CmmInfoTable"><span class="hs-identifier hs-type">CmmInfoTable</span></a></span><span>
</span><span id="line-181"></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>               </span><span class="hs-comment">-- Override default RTS type tag?</span><span>
</span><span id="line-182"></span><span>                    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Supply.html#UniqSM"><span class="hs-identifier hs-type">UniqSM</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#RawCmmDecl"><span class="hs-identifier hs-type">RawCmmDecl</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>             </span><span class="hs-comment">-- Auxiliary top decls</span><span>
</span><span id="line-183"></span><span>                               </span><span class="annot"><a href="GHC.Cmm.Info.html#InfoTableContents"><span class="hs-identifier hs-type">InfoTableContents</span></a></span><span class="hs-special">)</span><span>       </span><span class="hs-comment">-- Info tbl + extra bits</span><span>
</span><span id="line-184"></span><span>
</span><span id="line-185"></span><span id="mkInfoTableContents"><span class="annot"><span class="annottext">mkInfoTableContents :: DynFlags
-&gt; CmmInfoTable
-&gt; Maybe WordOff
-&gt; UniqSM (RawCmmGroup, InfoTableContents)
</span><a href="GHC.Cmm.Info.html#mkInfoTableContents"><span class="hs-identifier hs-var hs-var">mkInfoTableContents</span></a></span></span><span> </span><span id="local-6989586621681026803"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026803"><span class="hs-identifier hs-var">dflags</span></a></span></span><span>
</span><span id="line-186"></span><span>                    </span><span id="local-6989586621681026802"><span class="annot"><span class="annottext">info :: CmmInfoTable
</span><a href="#local-6989586621681026802"><span class="hs-identifier hs-var">info</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmInfoTable"><span class="hs-identifier hs-type">CmmInfoTable</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">cit_lbl :: CmmInfoTable -&gt; CLabel
</span><a href="GHC.Cmm.html#cit_lbl"><span class="hs-identifier hs-var">cit_lbl</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621681026801"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026801"><span class="hs-identifier hs-var">info_lbl</span></a></span></span><span>
</span><span id="line-187"></span><span>                                       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cit_rep :: CmmInfoTable -&gt; SMRep
</span><a href="GHC.Cmm.html#cit_rep"><span class="hs-identifier hs-var">cit_rep</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621681026800"><span class="annot"><span class="annottext">SMRep
</span><a href="#local-6989586621681026800"><span class="hs-identifier hs-var">smrep</span></a></span></span><span>
</span><span id="line-188"></span><span>                                       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cit_prof :: CmmInfoTable -&gt; ProfilingInfo
</span><a href="GHC.Cmm.html#cit_prof"><span class="hs-identifier hs-var">cit_prof</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621681026799"><span class="annot"><span class="annottext">ProfilingInfo
</span><a href="#local-6989586621681026799"><span class="hs-identifier hs-var">prof</span></a></span></span><span>
</span><span id="line-189"></span><span>                                       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">cit_srt :: CmmInfoTable -&gt; Maybe CLabel
</span><a href="GHC.Cmm.html#cit_srt"><span class="hs-identifier hs-var">cit_srt</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621681026798"><span class="annot"><span class="annottext">Maybe CLabel
</span><a href="#local-6989586621681026798"><span class="hs-identifier hs-var">srt</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-190"></span><span>                    </span><span id="local-6989586621681026797"><span class="annot"><span class="annottext">Maybe WordOff
</span><a href="#local-6989586621681026797"><span class="hs-identifier hs-var">mb_rts_tag</span></a></span></span><span>
</span><span id="line-191"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#RTSRep"><span class="hs-identifier hs-type">RTSRep</span></a></span><span> </span><span id="local-6989586621681026795"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026795"><span class="hs-identifier hs-var">rts_tag</span></a></span></span><span> </span><span id="local-6989586621681026794"><span class="annot"><span class="annottext">SMRep
</span><a href="#local-6989586621681026794"><span class="hs-identifier hs-var">rep</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">SMRep
</span><a href="#local-6989586621681026800"><span class="hs-identifier hs-var">smrep</span></a></span><span>
</span><span id="line-192"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags
-&gt; CmmInfoTable
-&gt; Maybe WordOff
-&gt; UniqSM (RawCmmGroup, InfoTableContents)
</span><a href="GHC.Cmm.Info.html#mkInfoTableContents"><span class="hs-identifier hs-var">mkInfoTableContents</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026803"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmInfoTable
</span><a href="#local-6989586621681026802"><span class="hs-identifier hs-var">info</span></a></span><span class="hs-special">{</span><span class="annot"><span class="annottext">cit_rep :: SMRep
</span><a href="GHC.Cmm.html#cit_rep"><span class="hs-identifier hs-var">cit_rep</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SMRep
</span><a href="#local-6989586621681026794"><span class="hs-identifier hs-var">rep</span></a></span><span class="hs-special">}</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff -&gt; Maybe WordOff
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026795"><span class="hs-identifier hs-var">rts_tag</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-193"></span><span>    </span><span class="hs-comment">-- Completely override the rts_tag that mkInfoTableContents would</span><span>
</span><span id="line-194"></span><span>    </span><span class="hs-comment">-- otherwise compute, with the rts_tag stored in the RTSRep</span><span>
</span><span id="line-195"></span><span>    </span><span class="hs-comment">-- (which in turn came from a handwritten .cmm file)</span><span>
</span><span id="line-196"></span><span>
</span><span id="line-197"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#StackRep"><span class="hs-identifier hs-type">StackRep</span></a></span><span> </span><span id="local-6989586621681026792"><span class="annot"><span class="annottext">[Bool]
</span><a href="#local-6989586621681026792"><span class="hs-identifier hs-var">frame</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">SMRep
</span><a href="#local-6989586621681026800"><span class="hs-identifier hs-var">smrep</span></a></span><span>
</span><span id="line-198"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span class="hs-special">{</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026791"><span class="annot"><span class="annottext">(CmmLit, CmmLit)
</span><a href="#local-6989586621681026791"><span class="hs-identifier hs-var">prof_lits</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026790"><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026790"><span class="hs-identifier hs-var">prof_data</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; ProfilingInfo -&gt; UniqSM ((CmmLit, CmmLit), RawCmmGroup)
</span><a href="GHC.Cmm.Info.html#mkProfLits"><span class="hs-identifier hs-var">mkProfLits</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">ProfilingInfo
</span><a href="#local-6989586621681026799"><span class="hs-identifier hs-var">prof</span></a></span><span>
</span><span id="line-199"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="hs-keyword">let</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026787"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026787"><span class="hs-identifier hs-var">srt_label</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026786"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026786"><span class="hs-identifier hs-var">srt_bitmap</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; Maybe CLabel -&gt; ([CmmLit], CmmLit)
</span><a href="GHC.Cmm.Info.html#mkSRTLit"><span class="hs-identifier hs-var">mkSRTLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026801"><span class="hs-identifier hs-var">info_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CLabel
</span><a href="#local-6989586621681026798"><span class="hs-identifier hs-var">srt</span></a></span><span>
</span><span id="line-200"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026784"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026784"><span class="hs-identifier hs-var">liveness_lit</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026783"><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026783"><span class="hs-identifier hs-var">liveness_data</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; [Bool] -&gt; UniqSM (CmmLit, RawCmmGroup)
</span><a href="GHC.Cmm.Info.html#mkLivenessBits"><span class="hs-identifier hs-var">mkLivenessBits</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026803"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">[Bool]
</span><a href="#local-6989586621681026792"><span class="hs-identifier hs-var">frame</span></a></span><span>
</span><span id="line-201"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="hs-keyword">let</span><span>
</span><span id="line-202"></span><span>             </span><span id="local-6989586621681026781"><span class="annot"><span class="annottext">std_info :: [CmmLit]
</span><a href="#local-6989586621681026781"><span class="hs-identifier hs-var hs-var">std_info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags
-&gt; (CmmLit, CmmLit) -&gt; WordOff -&gt; CmmLit -&gt; CmmLit -&gt; [CmmLit]
</span><a href="GHC.Cmm.Info.html#mkStdInfoTable"><span class="hs-identifier hs-var">mkStdInfoTable</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026803"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmLit, CmmLit)
</span><a href="#local-6989586621681026791"><span class="hs-identifier hs-var">prof_lits</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026779"><span class="hs-identifier hs-var">rts_tag</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026786"><span class="hs-identifier hs-var">srt_bitmap</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026784"><span class="hs-identifier hs-var">liveness_lit</span></a></span><span>
</span><span id="line-203"></span><span>             </span><span id="local-6989586621681026779"><span class="annot"><span class="annottext">rts_tag :: WordOff
</span><a href="#local-6989586621681026779"><span class="hs-identifier hs-var hs-var">rts_tag</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681026777"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026777"><span class="hs-identifier hs-var">tag</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Maybe WordOff
</span><a href="#local-6989586621681026797"><span class="hs-identifier hs-var">mb_rts_tag</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026777"><span class="hs-identifier hs-var">tag</span></a></span><span>
</span><span id="line-204"></span><span>                     </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">RawCmmGroup -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026783"><span class="hs-identifier hs-var">liveness_data</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="GHC.Runtime.Heap.Layout.html#rET_SMALL"><span class="hs-identifier hs-var">rET_SMALL</span></a></span><span> </span><span class="hs-comment">-- Fits in extra_bits</span><span>
</span><span id="line-205"></span><span>                     </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="GHC.Runtime.Heap.Layout.html#rET_BIG"><span class="hs-identifier hs-var">rET_BIG</span></a></span><span>   </span><span class="hs-comment">-- Does not; extra_bits is</span><span>
</span><span id="line-206"></span><span>                                                          </span><span class="hs-comment">-- a label</span><span>
</span><span id="line-207"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="annot"><span class="annottext">(RawCmmGroup, InfoTableContents)
-&gt; UniqSM (RawCmmGroup, InfoTableContents)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026790"><span class="hs-identifier hs-var">prof_data</span></a></span><span> </span><span class="annot"><span class="annottext">RawCmmGroup -&gt; RawCmmGroup -&gt; RawCmmGroup
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026783"><span class="hs-identifier hs-var">liveness_data</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026781"><span class="hs-identifier hs-var">std_info</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026787"><span class="hs-identifier hs-var">srt_label</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-208"></span><span>
</span><span id="line-209"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#HeapRep"><span class="hs-identifier hs-type">HeapRep</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681026772"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026772"><span class="hs-identifier hs-var">ptrs</span></a></span></span><span> </span><span id="local-6989586621681026771"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026771"><span class="hs-identifier hs-var">nonptrs</span></a></span></span><span> </span><span id="local-6989586621681026770"><span class="annot"><span class="annottext">ClosureTypeInfo
</span><a href="#local-6989586621681026770"><span class="hs-identifier hs-var">closure_type</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">SMRep
</span><a href="#local-6989586621681026800"><span class="hs-identifier hs-var">smrep</span></a></span><span>
</span><span id="line-210"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span class="hs-special">{</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681026769"><span class="annot"><span class="annottext">layout :: CmmLit
</span><a href="#local-6989586621681026769"><span class="hs-identifier hs-var hs-var">layout</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff -&gt; WordOff -&gt; CmmLit
</span><a href="GHC.Cmm.Info.html#packIntsCLit"><span class="hs-identifier hs-var">packIntsCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026772"><span class="hs-identifier hs-var">ptrs</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026771"><span class="hs-identifier hs-var">nonptrs</span></a></span><span>
</span><span id="line-211"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026767"><span class="annot"><span class="annottext">(CmmLit, CmmLit)
</span><a href="#local-6989586621681026767"><span class="hs-identifier hs-var">prof_lits</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026766"><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026766"><span class="hs-identifier hs-var">prof_data</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; ProfilingInfo -&gt; UniqSM ((CmmLit, CmmLit), RawCmmGroup)
</span><a href="GHC.Cmm.Info.html#mkProfLits"><span class="hs-identifier hs-var">mkProfLits</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">ProfilingInfo
</span><a href="#local-6989586621681026799"><span class="hs-identifier hs-var">prof</span></a></span><span>
</span><span id="line-212"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="hs-keyword">let</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026765"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026765"><span class="hs-identifier hs-var">srt_label</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026764"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026764"><span class="hs-identifier hs-var">srt_bitmap</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CLabel -&gt; Maybe CLabel -&gt; ([CmmLit], CmmLit)
</span><a href="GHC.Cmm.Info.html#mkSRTLit"><span class="hs-identifier hs-var">mkSRTLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026801"><span class="hs-identifier hs-var">info_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CLabel
</span><a href="#local-6989586621681026798"><span class="hs-identifier hs-var">srt</span></a></span><span>
</span><span id="line-213"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026763"><span class="annot"><span class="annottext">Maybe CmmLit
</span><a href="#local-6989586621681026763"><span class="hs-identifier hs-var">mb_srt_field</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026762"><span class="annot"><span class="annottext">Maybe CmmLit
</span><a href="#local-6989586621681026762"><span class="hs-identifier hs-var">mb_layout</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026761"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026761"><span class="hs-identifier hs-var">extra_bits</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026760"><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026760"><span class="hs-identifier hs-var">ct_data</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-214"></span><span>                                </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ClosureTypeInfo
-&gt; [CmmLit]
-&gt; UniqSM (Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
</span><a href="#local-6989586621681026759"><span class="hs-identifier hs-var">mk_pieces</span></a></span><span> </span><span class="annot"><span class="annottext">ClosureTypeInfo
</span><a href="#local-6989586621681026770"><span class="hs-identifier hs-var">closure_type</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026765"><span class="hs-identifier hs-var">srt_label</span></a></span><span>
</span><span id="line-215"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681026758"><span class="annot"><span class="annottext">std_info :: [CmmLit]
</span><a href="#local-6989586621681026758"><span class="hs-identifier hs-var hs-var">std_info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags
-&gt; (CmmLit, CmmLit) -&gt; WordOff -&gt; CmmLit -&gt; CmmLit -&gt; [CmmLit]
</span><a href="GHC.Cmm.Info.html#mkStdInfoTable"><span class="hs-identifier hs-var">mkStdInfoTable</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026803"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmLit, CmmLit)
</span><a href="#local-6989586621681026767"><span class="hs-identifier hs-var">prof_lits</span></a></span><span>
</span><span id="line-216"></span><span>                                       </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe WordOff
</span><a href="#local-6989586621681026797"><span class="hs-identifier hs-var">mb_rts_tag</span></a></span><span>   </span><span class="annot"><span class="annottext">Maybe WordOff -&gt; WordOff -&gt; WordOff
forall a. Maybe a -&gt; a -&gt; a
</span><a href="GHC.Data.Maybe.html#orElse"><span class="hs-operator hs-var">`orElse`</span></a></span><span> </span><span class="annot"><span class="annottext">SMRep -&gt; WordOff
</span><a href="GHC.Runtime.Heap.Layout.html#rtsClosureType"><span class="hs-identifier hs-var">rtsClosureType</span></a></span><span> </span><span class="annot"><span class="annottext">SMRep
</span><a href="#local-6989586621681026800"><span class="hs-identifier hs-var">smrep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-217"></span><span>                                       </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe CmmLit
</span><a href="#local-6989586621681026763"><span class="hs-identifier hs-var">mb_srt_field</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe CmmLit -&gt; CmmLit -&gt; CmmLit
forall a. Maybe a -&gt; a -&gt; a
</span><a href="GHC.Data.Maybe.html#orElse"><span class="hs-operator hs-var">`orElse`</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026764"><span class="hs-identifier hs-var">srt_bitmap</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-218"></span><span>                                       </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe CmmLit
</span><a href="#local-6989586621681026762"><span class="hs-identifier hs-var">mb_layout</span></a></span><span>    </span><span class="annot"><span class="annottext">Maybe CmmLit -&gt; CmmLit -&gt; CmmLit
forall a. Maybe a -&gt; a -&gt; a
</span><a href="GHC.Data.Maybe.html#orElse"><span class="hs-operator hs-var">`orElse`</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026769"><span class="hs-identifier hs-var">layout</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-219"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="annot"><span class="annottext">(RawCmmGroup, InfoTableContents)
-&gt; UniqSM (RawCmmGroup, InfoTableContents)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026766"><span class="hs-identifier hs-var">prof_data</span></a></span><span> </span><span class="annot"><span class="annottext">RawCmmGroup -&gt; RawCmmGroup -&gt; RawCmmGroup
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026760"><span class="hs-identifier hs-var">ct_data</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026758"><span class="hs-identifier hs-var">std_info</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026761"><span class="hs-identifier hs-var">extra_bits</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-220"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-221"></span><span>    </span><span id="local-6989586621681026788"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026803"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-222"></span><span>    </span><span class="annot"><a href="#local-6989586621681026759"><span class="hs-identifier hs-type">mk_pieces</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#ClosureTypeInfo"><span class="hs-identifier hs-type">ClosureTypeInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-223"></span><span>              </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Supply.html#UniqSM"><span class="hs-identifier hs-type">UniqSM</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>  </span><span class="hs-comment">-- Override the SRT field with this</span><span>
</span><span id="line-224"></span><span>                        </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>  </span><span class="hs-comment">-- Override the layout field with this</span><span>
</span><span id="line-225"></span><span>                        </span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">]</span><span>           </span><span class="hs-comment">-- &quot;Extra bits&quot; for info table</span><span>
</span><span id="line-226"></span><span>                        </span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#RawCmmDecl"><span class="hs-identifier hs-type">RawCmmDecl</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>      </span><span class="hs-comment">-- Auxiliary data decls</span><span>
</span><span id="line-227"></span><span>    </span><span id="local-6989586621681026759"><span class="annot"><span class="annottext">mk_pieces :: ClosureTypeInfo
-&gt; [CmmLit]
-&gt; UniqSM (Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
</span><a href="#local-6989586621681026759"><span class="hs-identifier hs-var hs-var">mk_pieces</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#Constr"><span class="hs-identifier hs-type">Constr</span></a></span><span> </span><span id="local-6989586621681026754"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026754"><span class="hs-identifier hs-var">con_tag</span></a></span></span><span> </span><span id="local-6989586621681026753"><span class="annot"><span class="annottext">ConstrDescription
</span><a href="#local-6989586621681026753"><span class="hs-identifier hs-var">con_descr</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681026752"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026752"><span class="hs-identifier hs-var">_no_srt</span></a></span></span><span>    </span><span class="hs-comment">-- A data constructor</span><span>
</span><span id="line-228"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span class="hs-special">{</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026751"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026751"><span class="hs-identifier hs-var">descr_lit</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026750"><span class="annot"><span class="annottext">GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
</span><a href="#local-6989586621681026750"><span class="hs-identifier hs-var">decl</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ConstrDescription
-&gt; UniqSM
     (CmmLit,
      GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph)
forall info stmt.
ConstrDescription
-&gt; UniqSM (CmmLit, GenCmmDecl RawCmmStatics info stmt)
</span><a href="GHC.Cmm.Info.html#newStringLit"><span class="hs-identifier hs-var">newStringLit</span></a></span><span> </span><span class="annot"><span class="annottext">ConstrDescription
</span><a href="#local-6989586621681026753"><span class="hs-identifier hs-var">con_descr</span></a></span><span>
</span><span id="line-229"></span><span>           </span><span class="hs-special">;</span><span> </span><span class="annot"><span class="annottext">(Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
-&gt; UniqSM (Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; Maybe CmmLit
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026754"><span class="hs-identifier hs-var">con_tag</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-230"></span><span>                                   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#halfWordWidth"><span class="hs-identifier hs-var">halfWordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-231"></span><span>                    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Maybe CmmLit
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026751"><span class="hs-identifier hs-var">descr_lit</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
</span><a href="#local-6989586621681026750"><span class="hs-identifier hs-var">decl</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-232"></span><span>
</span><span id="line-233"></span><span>    </span><span class="annot"><a href="#local-6989586621681026759"><span class="hs-identifier hs-var">mk_pieces</span></a></span><span> </span><span class="annot"><span class="annottext">ClosureTypeInfo
</span><a href="GHC.Runtime.Heap.Layout.html#Thunk"><span class="hs-identifier hs-var">Thunk</span></a></span><span> </span><span id="local-6989586621681026745"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026745"><span class="hs-identifier hs-var">srt_label</span></a></span></span><span>
</span><span id="line-234"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
-&gt; UniqSM (Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe CmmLit
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Maybe CmmLit
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026745"><span class="hs-identifier hs-var">srt_label</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-235"></span><span>
</span><span id="line-236"></span><span>    </span><span class="annot"><a href="#local-6989586621681026759"><span class="hs-identifier hs-var">mk_pieces</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#ThunkSelector"><span class="hs-identifier hs-type">ThunkSelector</span></a></span><span> </span><span id="local-6989586621681026743"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026743"><span class="hs-identifier hs-var">offset</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681026742"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026742"><span class="hs-identifier hs-var">_no_srt</span></a></span></span><span>
</span><span id="line-237"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
-&gt; UniqSM (Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmLit -&gt; Maybe CmmLit
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">0</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#halfWordWidth"><span class="hs-identifier hs-var">halfWordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-238"></span><span>                </span><span class="annot"><span class="annottext">CmmLit -&gt; Maybe CmmLit
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Integer -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#mkWordCLit"><span class="hs-identifier hs-var">mkWordCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026743"><span class="hs-identifier hs-var">offset</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-239"></span><span>         </span><span class="hs-comment">-- Layout known (one free var); we use the layout field for offset</span><span>
</span><span id="line-240"></span><span>
</span><span id="line-241"></span><span>    </span><span class="annot"><a href="#local-6989586621681026759"><span class="hs-identifier hs-var">mk_pieces</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#Fun"><span class="hs-identifier hs-type">Fun</span></a></span><span> </span><span id="local-6989586621681026739"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026739"><span class="hs-identifier hs-var">arity</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.StgToCmm.Types.html#ArgSpec"><span class="hs-identifier hs-type">ArgSpec</span></a></span><span> </span><span id="local-6989586621681026737"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026737"><span class="hs-identifier hs-var">fun_type</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span id="local-6989586621681026736"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026736"><span class="hs-identifier hs-var">srt_label</span></a></span></span><span>
</span><span id="line-242"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span class="hs-special">{</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681026735"><span class="annot"><span class="annottext">extra_bits :: [CmmLit]
</span><a href="#local-6989586621681026735"><span class="hs-identifier hs-var hs-var">extra_bits</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff -&gt; WordOff -&gt; CmmLit
</span><a href="GHC.Cmm.Info.html#packIntsCLit"><span class="hs-identifier hs-var">packIntsCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026737"><span class="hs-identifier hs-var">fun_type</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026739"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="annot"><span class="annottext">CmmLit -&gt; [CmmLit] -&gt; [CmmLit]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026736"><span class="hs-identifier hs-var">srt_label</span></a></span><span>
</span><span id="line-243"></span><span>           </span><span class="hs-special">;</span><span> </span><span class="annot"><span class="annottext">(Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
-&gt; UniqSM (Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe CmmLit
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Maybe CmmLit
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span>  </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026735"><span class="hs-identifier hs-var">extra_bits</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-244"></span><span>
</span><span id="line-245"></span><span>    </span><span class="annot"><a href="#local-6989586621681026759"><span class="hs-identifier hs-var">mk_pieces</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#Fun"><span class="hs-identifier hs-type">Fun</span></a></span><span> </span><span id="local-6989586621681026734"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026734"><span class="hs-identifier hs-var">arity</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.StgToCmm.Types.html#ArgGen"><span class="hs-identifier hs-type">ArgGen</span></a></span><span> </span><span id="local-6989586621681026732"><span class="annot"><span class="annottext">[Bool]
</span><a href="#local-6989586621681026732"><span class="hs-identifier hs-var">arg_bits</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span id="local-6989586621681026731"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026731"><span class="hs-identifier hs-var">srt_label</span></a></span></span><span>
</span><span id="line-246"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span class="hs-special">{</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026730"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026730"><span class="hs-identifier hs-var">liveness_lit</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026729"><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026729"><span class="hs-identifier hs-var">liveness_data</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; [Bool] -&gt; UniqSM (CmmLit, RawCmmGroup)
</span><a href="GHC.Cmm.Info.html#mkLivenessBits"><span class="hs-identifier hs-var">mkLivenessBits</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026803"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">[Bool]
</span><a href="#local-6989586621681026732"><span class="hs-identifier hs-var">arg_bits</span></a></span><span>
</span><span id="line-247"></span><span>           </span><span class="hs-special">;</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681026727"><span class="annot"><span class="annottext">fun_type :: WordOff
</span><a href="#local-6989586621681026727"><span class="hs-identifier hs-var hs-var">fun_type</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">RawCmmGroup -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026729"><span class="hs-identifier hs-var">liveness_data</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="GHC.Runtime.Heap.Layout.html#aRG_GEN"><span class="hs-identifier hs-var">aRG_GEN</span></a></span><span>
</span><span id="line-248"></span><span>                          </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="GHC.Runtime.Heap.Layout.html#aRG_GEN_BIG"><span class="hs-identifier hs-var">aRG_GEN_BIG</span></a></span><span>
</span><span id="line-249"></span><span>                 </span><span id="local-6989586621681026724"><span class="annot"><span class="annottext">extra_bits :: [CmmLit]
</span><a href="#local-6989586621681026724"><span class="hs-identifier hs-var hs-var">extra_bits</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff -&gt; WordOff -&gt; CmmLit
</span><a href="GHC.Cmm.Info.html#packIntsCLit"><span class="hs-identifier hs-var">packIntsCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026727"><span class="hs-identifier hs-var">fun_type</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026734"><span class="hs-identifier hs-var">arity</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-250"></span><span>                           </span><span class="annot"><span class="annottext">[CmmLit] -&gt; [CmmLit] -&gt; [CmmLit]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Bool
</span><a href="GHC.Cmm.Info.html#inlineSRT"><span class="hs-identifier hs-var">inlineSRT</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-keyword">else</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026722"><span class="hs-identifier hs-var">srt_lit</span></a></span><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-251"></span><span>                           </span><span class="annot"><span class="annottext">[CmmLit] -&gt; [CmmLit] -&gt; [CmmLit]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026730"><span class="hs-identifier hs-var">liveness_lit</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026721"><span class="hs-identifier hs-var">slow_entry</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-252"></span><span>           </span><span class="hs-special">;</span><span> </span><span class="annot"><span class="annottext">(Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
-&gt; UniqSM (Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Maybe CmmLit
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Maybe CmmLit
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026724"><span class="hs-identifier hs-var">extra_bits</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">RawCmmGroup
</span><a href="#local-6989586621681026729"><span class="hs-identifier hs-var">liveness_data</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-253"></span><span>      </span><span class="hs-keyword">where</span><span>
</span><span id="line-254"></span><span>        </span><span id="local-6989586621681026721"><span class="annot"><span class="annottext">slow_entry :: CmmLit
</span><a href="#local-6989586621681026721"><span class="hs-identifier hs-var hs-var">slow_entry</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-var">CmmLabel</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; CLabel
</span><a href="GHC.Cmm.CLabel.html#toSlowEntryLbl"><span class="hs-identifier hs-var">toSlowEntryLbl</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026801"><span class="hs-identifier hs-var">info_lbl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-255"></span><span>        </span><span id="local-6989586621681026722"><span class="annot"><span class="annottext">srt_lit :: CmmLit
</span><a href="#local-6989586621681026722"><span class="hs-identifier hs-var hs-var">srt_lit</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026731"><span class="hs-identifier hs-var">srt_label</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-256"></span><span>                    </span><span class="hs-special">[</span><span class="hs-special">]</span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#mkIntCLit"><span class="hs-identifier hs-var">mkIntCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026788"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">0</span></span><span>
</span><span id="line-257"></span><span>                    </span><span class="hs-special">(</span><span id="local-6989586621681026717"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026717"><span class="hs-identifier hs-var">lit</span></a></span></span><span class="annot"><span class="hs-glyph hs-type">:</span></span><span id="local-6989586621681026716"><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026716"><span class="hs-identifier hs-var">_rest</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier">ASSERT</span><span class="hs-special">(</span><span> </span><span class="hs-identifier">null</span><span> </span><span class="hs-identifier">_rest</span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-identifier">lit</span><span>
</span><span id="line-258"></span><span>
</span><span id="line-259"></span><span>    </span><span class="annot"><a href="#local-6989586621681026759"><span class="hs-identifier hs-var">mk_pieces</span></a></span><span> </span><span id="local-6989586621681026712"><span class="annot"><span class="annottext">ClosureTypeInfo
</span><a href="#local-6989586621681026712"><span class="hs-identifier hs-var">other</span></a></span></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String
-&gt; SDoc
-&gt; UniqSM (Maybe CmmLit, Maybe CmmLit, [CmmLit], RawCmmGroup)
forall a. HasCallStack =&gt; String -&gt; SDoc -&gt; a
</span><a href="GHC.Utils.Outputable.html#pprPanic"><span class="hs-identifier hs-var">pprPanic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;mk_pieces&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ClosureTypeInfo -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">ClosureTypeInfo
</span><a href="#local-6989586621681026712"><span class="hs-identifier hs-var">other</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-260"></span><span>
</span><span id="line-261"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkInfoTableContents"><span class="hs-identifier hs-var">mkInfoTableContents</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">CmmInfoTable
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Maybe WordOff
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; UniqSM (RawCmmGroup, InfoTableContents)
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;mkInfoTableContents&quot;</span></span><span>   </span><span class="hs-comment">-- NonInfoTable dealt with earlier</span><span>
</span><span id="line-262"></span><span>
</span><span id="line-263"></span><span class="annot"><a href="GHC.Cmm.Info.html#packIntsCLit"><span class="hs-identifier hs-type">packIntsCLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-264"></span><span id="packIntsCLit"><span class="annot"><span class="annottext">packIntsCLit :: Platform -&gt; WordOff -&gt; WordOff -&gt; CmmLit
</span><a href="GHC.Cmm.Info.html#packIntsCLit"><span class="hs-identifier hs-var hs-var">packIntsCLit</span></a></span></span><span> </span><span id="local-6989586621681026708"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026708"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681026707"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026707"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621681026706"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026706"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; StgHalfWord -&gt; StgHalfWord -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#packHalfWordsCLit"><span class="hs-identifier hs-var">packHalfWordsCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026708"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-265"></span><span>                           </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Integer -&gt; StgHalfWord
</span><a href="GHC.Runtime.Heap.Layout.html#toStgHalfWord"><span class="hs-identifier hs-var">toStgHalfWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026708"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026707"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-266"></span><span>                           </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Integer -&gt; StgHalfWord
</span><a href="GHC.Runtime.Heap.Layout.html#toStgHalfWord"><span class="hs-identifier hs-var">toStgHalfWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026708"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026706"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-267"></span><span>
</span><span id="line-268"></span><span>
</span><span id="line-269"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkSRTLit"><span class="hs-identifier hs-type">mkSRTLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span>
</span><span id="line-270"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span>
</span><span id="line-271"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span>
</span><span id="line-272"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>    </span><span class="hs-comment">-- srt_label, if any</span><span>
</span><span id="line-273"></span><span>             </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">)</span><span>      </span><span class="hs-comment">-- srt_bitmap</span><span>
</span><span id="line-274"></span><span id="mkSRTLit"><span class="annot"><span class="annottext">mkSRTLit :: Platform -&gt; CLabel -&gt; Maybe CLabel -&gt; ([CmmLit], CmmLit)
</span><a href="GHC.Cmm.Info.html#mkSRTLit"><span class="hs-identifier hs-var hs-var">mkSRTLit</span></a></span></span><span> </span><span id="local-6989586621681026703"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026703"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681026702"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026702"><span class="hs-identifier hs-var">info_lbl</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681026701"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026701"><span class="hs-identifier hs-var">lbl</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-275"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Bool
</span><a href="GHC.Cmm.Info.html#inlineSRT"><span class="hs-identifier hs-var">inlineSRT</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026703"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-276"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; CLabel -&gt; WordOff -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabelDiffOff"><span class="hs-identifier hs-var">CmmLabelDiffOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026701"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026702"><span class="hs-identifier hs-var">info_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">0</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#halfWordWidth"><span class="hs-identifier hs-var">halfWordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026703"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-277"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkSRTLit"><span class="hs-identifier hs-var">mkSRTLit</span></a></span><span> </span><span id="local-6989586621681026699"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026699"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Maybe CLabel
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">0</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#halfWordWidth"><span class="hs-identifier hs-var">halfWordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026699"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-278"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkSRTLit"><span class="hs-identifier hs-var">mkSRTLit</span></a></span><span> </span><span id="local-6989586621681026698"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026698"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621681026697"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026697"><span class="hs-identifier hs-var">lbl</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><span class="annottext">CLabel -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-var">CmmLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026697"><span class="hs-identifier hs-var">lbl</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">1</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#halfWordWidth"><span class="hs-identifier hs-var">halfWordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026698"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-279"></span><span>
</span><span id="line-280"></span><span>
</span><span id="line-281"></span><span class="hs-comment">-- | Is the SRT offset field inline in the info table on this platform?</span><span>
</span><span id="line-282"></span><span class="hs-comment">--</span><span>
</span><span id="line-283"></span><span class="hs-comment">-- See the section &quot;Referring to an SRT from the info table&quot; in</span><span>
</span><span id="line-284"></span><span class="hs-comment">-- Note [SRTs] in &quot;GHC.Cmm.Info.Build&quot;</span><span>
</span><span id="line-285"></span><span class="annot"><a href="GHC.Cmm.Info.html#inlineSRT"><span class="hs-identifier hs-type">inlineSRT</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-286"></span><span id="inlineSRT"><span class="annot"><span class="annottext">inlineSRT :: Platform -&gt; Bool
</span><a href="GHC.Cmm.Info.html#inlineSRT"><span class="hs-identifier hs-var hs-var">inlineSRT</span></a></span></span><span> </span><span id="local-6989586621681026696"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026696"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformArch"><span class="hs-identifier hs-var">platformArch</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026696"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Arch -&gt; Arch -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">Arch
</span><a href="../../ghc-boot/src/GHC.Platform.html#ArchX86_64"><span class="hs-identifier hs-var">ArchX86_64</span></a></span><span>
</span><span id="line-287"></span><span>  </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Bool
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformTablesNextToCode"><span class="hs-identifier hs-var hs-var">platformTablesNextToCode</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026696"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-288"></span><span>
</span><span id="line-289"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-290"></span><span class="hs-comment">--</span><span>
</span><span id="line-291"></span><span class="hs-comment">--      Lay out the info table and handle relative offsets</span><span>
</span><span id="line-292"></span><span class="hs-comment">--</span><span>
</span><span id="line-293"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-294"></span><span>
</span><span id="line-295"></span><span class="hs-comment">-- This function takes</span><span>
</span><span id="line-296"></span><span class="hs-comment">--   * the standard info table portion (StgInfoTable)</span><span>
</span><span id="line-297"></span><span class="hs-comment">--   * the &quot;extra bits&quot; (StgFunInfoExtraRev etc.)</span><span>
</span><span id="line-298"></span><span class="hs-comment">--   * the entry label</span><span>
</span><span id="line-299"></span><span class="hs-comment">--   * the code</span><span>
</span><span id="line-300"></span><span class="hs-comment">-- and lays them out in memory, producing a list of RawCmmDecl</span><span>
</span><span id="line-301"></span><span>
</span><span id="line-302"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-303"></span><span class="hs-comment">--</span><span>
</span><span id="line-304"></span><span class="hs-comment">--      Position independent code</span><span>
</span><span id="line-305"></span><span class="hs-comment">--</span><span>
</span><span id="line-306"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-307"></span><span class="hs-comment">-- In order to support position independent code, we mustn't put absolute</span><span>
</span><span id="line-308"></span><span class="hs-comment">-- references into read-only space. Info tables in the tablesNextToCode</span><span>
</span><span id="line-309"></span><span class="hs-comment">-- case must be in .text, which is read-only, so we doctor the CmmLits</span><span>
</span><span id="line-310"></span><span class="hs-comment">-- to use relative offsets instead.</span><span>
</span><span id="line-311"></span><span>
</span><span id="line-312"></span><span class="hs-comment">-- Note that this is done even when the -fPIC flag is not specified,</span><span>
</span><span id="line-313"></span><span class="hs-comment">-- as we want to keep binary compatibility between PIC and non-PIC.</span><span>
</span><span id="line-314"></span><span>
</span><span id="line-315"></span><span class="annot"><a href="GHC.Cmm.Info.html#makeRelativeRefTo"><span class="hs-identifier hs-type">makeRelativeRefTo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html#CLabel"><span class="hs-identifier hs-type">CLabel</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>
</span><span id="line-316"></span><span id="makeRelativeRefTo"><span class="annot"><span class="annottext">makeRelativeRefTo :: Platform -&gt; CLabel -&gt; CmmLit -&gt; CmmLit
</span><a href="GHC.Cmm.Info.html#makeRelativeRefTo"><span class="hs-identifier hs-var hs-var">makeRelativeRefTo</span></a></span></span><span> </span><span id="local-6989586621681026693"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026693"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681026692"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026692"><span class="hs-identifier hs-var">info_lbl</span></a></span></span><span> </span><span id="local-6989586621681026691"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026691"><span class="hs-identifier hs-var">lit</span></a></span></span><span>
</span><span id="line-317"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Bool
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformTablesNextToCode"><span class="hs-identifier hs-var hs-var">platformTablesNextToCode</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026693"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-318"></span><span>      </span><span class="hs-keyword">then</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026691"><span class="hs-identifier hs-var">lit</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-319"></span><span>         </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-type">CmmLabel</span></a></span><span> </span><span id="local-6989586621681026690"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026690"><span class="hs-identifier hs-var">lbl</span></a></span></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; CLabel -&gt; WordOff -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabelDiffOff"><span class="hs-identifier hs-var">CmmLabelDiffOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026690"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026692"><span class="hs-identifier hs-var">info_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">0</span></span><span>   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026693"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-320"></span><span>         </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLabelOff"><span class="hs-identifier hs-type">CmmLabelOff</span></a></span><span> </span><span id="local-6989586621681026687"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026687"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681026686"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026686"><span class="hs-identifier hs-var">off</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CLabel -&gt; CLabel -&gt; WordOff -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabelDiffOff"><span class="hs-identifier hs-var">CmmLabelDiffOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026687"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026692"><span class="hs-identifier hs-var">info_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026686"><span class="hs-identifier hs-var">off</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026693"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-321"></span><span>         </span><span class="annot"><span class="annottext">CmmLit
</span><span class="hs-identifier">_</span></span><span>                   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026691"><span class="hs-identifier hs-var">lit</span></a></span><span>
</span><span id="line-322"></span><span>      </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026691"><span class="hs-identifier hs-var">lit</span></a></span><span>
</span><span id="line-323"></span><span>
</span><span id="line-324"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-325"></span><span class="hs-comment">--</span><span>
</span><span id="line-326"></span><span class="hs-comment">--              Build a liveness mask for the stack layout</span><span>
</span><span id="line-327"></span><span class="hs-comment">--</span><span>
</span><span id="line-328"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-329"></span><span>
</span><span id="line-330"></span><span class="hs-comment">-- There are four kinds of things on the stack:</span><span>
</span><span id="line-331"></span><span class="hs-comment">--</span><span>
</span><span id="line-332"></span><span class="hs-comment">--      - pointer variables (bound in the environment)</span><span>
</span><span id="line-333"></span><span class="hs-comment">--      - non-pointer variables (bound in the environment)</span><span>
</span><span id="line-334"></span><span class="hs-comment">--      - free slots (recorded in the stack free list)</span><span>
</span><span id="line-335"></span><span class="hs-comment">--      - non-pointer data slots (recorded in the stack free list)</span><span>
</span><span id="line-336"></span><span class="hs-comment">--</span><span>
</span><span id="line-337"></span><span class="hs-comment">-- The first two are represented with a 'Just' of a 'LocalReg'.</span><span>
</span><span id="line-338"></span><span class="hs-comment">-- The last two with one or more 'Nothing' constructors.</span><span>
</span><span id="line-339"></span><span class="hs-comment">-- Each 'Nothing' represents one used word.</span><span>
</span><span id="line-340"></span><span class="hs-comment">--</span><span>
</span><span id="line-341"></span><span class="hs-comment">-- The head of the stack layout is the top of the stack and</span><span>
</span><span id="line-342"></span><span class="hs-comment">-- the least-significant bit.</span><span>
</span><span id="line-343"></span><span>
</span><span id="line-344"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkLivenessBits"><span class="hs-identifier hs-type">mkLivenessBits</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#Liveness"><span class="hs-identifier hs-type">Liveness</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Supply.html#UniqSM"><span class="hs-identifier hs-type">UniqSM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#RawCmmDecl"><span class="hs-identifier hs-type">RawCmmDecl</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-345"></span><span>              </span><span class="hs-comment">-- ^ Returns:</span><span>
</span><span id="line-346"></span><span>              </span><span class="hs-comment">--   1. The bitmap (literal value or label)</span><span>
</span><span id="line-347"></span><span>              </span><span class="hs-comment">--   2. Large bitmap CmmData if needed</span><span>
</span><span id="line-348"></span><span>
</span><span id="line-349"></span><span id="mkLivenessBits"><span class="annot"><span class="annottext">mkLivenessBits :: DynFlags -&gt; [Bool] -&gt; UniqSM (CmmLit, RawCmmGroup)
</span><a href="GHC.Cmm.Info.html#mkLivenessBits"><span class="hs-identifier hs-var hs-var">mkLivenessBits</span></a></span></span><span> </span><span id="local-6989586621681026684"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026684"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026683"><span class="annot"><span class="annottext">[Bool]
</span><a href="#local-6989586621681026683"><span class="hs-identifier hs-var">liveness</span></a></span></span><span>
</span><span id="line-350"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026682"><span class="hs-identifier hs-var">n_bits</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">&gt;</span></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff
</span><a href="GHC.Data.Bitmap.html#mAX_SMALL_BITMAP_SIZE"><span class="hs-identifier hs-var">mAX_SMALL_BITMAP_SIZE</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026679"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-comment">-- does not fit in one word</span><span>
</span><span id="line-351"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span class="hs-special">{</span><span> </span><span id="local-6989586621681026678"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621681026678"><span class="hs-identifier hs-var">uniq</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">UniqSM Unique
forall (m :: * -&gt; *). MonadUnique m =&gt; m Unique
</span><a href="GHC.Types.Unique.Supply.html#getUniqueM"><span class="hs-identifier hs-var">getUniqueM</span></a></span><span>
</span><span id="line-352"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681026676"><span class="annot"><span class="annottext">bitmap_lbl :: CLabel
</span><a href="#local-6989586621681026676"><span class="hs-identifier hs-var hs-var">bitmap_lbl</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Unique -&gt; CLabel
</span><a href="GHC.Cmm.CLabel.html#mkBitmapLabel"><span class="hs-identifier hs-var">mkBitmapLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621681026678"><span class="hs-identifier hs-var">uniq</span></a></span><span>
</span><span id="line-353"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="annot"><span class="annottext">(CmmLit, RawCmmGroup) -&gt; UniqSM (CmmLit, RawCmmGroup)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabel"><span class="hs-identifier hs-var">CmmLabel</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026676"><span class="hs-identifier hs-var">bitmap_lbl</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-354"></span><span>                 </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CLabel
-&gt; [CmmLit]
-&gt; GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
forall (raw :: Bool) info stmt.
CLabel -&gt; [CmmLit] -&gt; GenCmmDecl (GenCmmStatics raw) info stmt
</span><a href="GHC.Cmm.Utils.html#mkRODataLits"><span class="hs-identifier hs-var">mkRODataLits</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681026676"><span class="hs-identifier hs-var">bitmap_lbl</span></a></span><span> </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026674"><span class="hs-identifier hs-var">lits</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-355"></span><span>
</span><span id="line-356"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-comment">-- Fits in one word</span><span>
</span><span id="line-357"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(CmmLit, RawCmmGroup) -&gt; UniqSM (CmmLit, RawCmmGroup)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; StgWord -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#mkStgWordCLit"><span class="hs-identifier hs-var">mkStgWordCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026679"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">StgWord
</span><a href="#local-6989586621681026672"><span class="hs-identifier hs-var">bitmap_word</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-358"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-359"></span><span>    </span><span id="local-6989586621681026679"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026679"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026684"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-360"></span><span>    </span><span id="local-6989586621681026682"><span class="annot"><span class="annottext">n_bits :: WordOff
</span><a href="#local-6989586621681026682"><span class="hs-identifier hs-var hs-var">n_bits</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Bool] -&gt; WordOff
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; WordOff
</span><a href="../../base/src/Data.Foldable.html#length"><span class="hs-identifier hs-var">length</span></a></span><span> </span><span class="annot"><span class="annottext">[Bool]
</span><a href="#local-6989586621681026683"><span class="hs-identifier hs-var">liveness</span></a></span><span>
</span><span id="line-361"></span><span>
</span><span id="line-362"></span><span>    </span><span class="annot"><a href="#local-6989586621681026669"><span class="hs-identifier hs-type">bitmap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Data.Bitmap.html#Bitmap"><span class="hs-identifier hs-type">Bitmap</span></a></span><span>
</span><span id="line-363"></span><span>    </span><span id="local-6989586621681026669"><span class="annot"><span class="annottext">bitmap :: Bitmap
</span><a href="#local-6989586621681026669"><span class="hs-identifier hs-var hs-var">bitmap</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; [Bool] -&gt; Bitmap
</span><a href="GHC.Data.Bitmap.html#mkBitmap"><span class="hs-identifier hs-var">mkBitmap</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026679"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">[Bool]
</span><a href="#local-6989586621681026683"><span class="hs-identifier hs-var">liveness</span></a></span><span>
</span><span id="line-364"></span><span>
</span><span id="line-365"></span><span>    </span><span id="local-6989586621681026667"><span class="annot"><span class="annottext">small_bitmap :: StgWord
</span><a href="#local-6989586621681026667"><span class="hs-identifier hs-var hs-var">small_bitmap</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Bitmap
</span><a href="#local-6989586621681026669"><span class="hs-identifier hs-var">bitmap</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-366"></span><span>                     </span><span class="hs-special">[</span><span class="hs-special">]</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Integer -&gt; StgWord
</span><a href="GHC.Runtime.Heap.Layout.html#toStgWord"><span class="hs-identifier hs-var">toStgWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026679"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">0</span></span><span>
</span><span id="line-367"></span><span>                     </span><span class="hs-special">[</span><span id="local-6989586621681026665"><span class="annot"><span class="annottext">StgWord
</span><a href="#local-6989586621681026665"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">StgWord
</span><a href="#local-6989586621681026665"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-368"></span><span>                     </span><span class="annot"><span class="annottext">Bitmap
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; StgWord
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;mkLiveness&quot;</span></span><span>
</span><span id="line-369"></span><span>    </span><span id="local-6989586621681026672"><span class="annot"><span class="annottext">bitmap_word :: StgWord
</span><a href="#local-6989586621681026672"><span class="hs-identifier hs-var hs-var">bitmap_word</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Integer -&gt; StgWord
</span><a href="GHC.Runtime.Heap.Layout.html#toStgWord"><span class="hs-identifier hs-var">toStgWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026679"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026682"><span class="hs-identifier hs-var">n_bits</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-370"></span><span>              </span><span class="annot"><span class="annottext">StgWord -&gt; StgWord -&gt; StgWord
forall a. Bits a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/Data.Bits.html#.%7C."><span class="hs-operator hs-var">.|.</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">StgWord
</span><a href="#local-6989586621681026667"><span class="hs-identifier hs-var">small_bitmap</span></a></span><span> </span><span class="annot"><span class="annottext">StgWord -&gt; WordOff -&gt; StgWord
forall a. Bits a =&gt; a -&gt; WordOff -&gt; a
</span><a href="../../base/src/Data.Bits.html#shiftL"><span class="hs-operator hs-var">`shiftL`</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Driver.Session.html#bITMAP_BITS_SHIFT"><span class="hs-identifier hs-var">bITMAP_BITS_SHIFT</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026684"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-371"></span><span>
</span><span id="line-372"></span><span>    </span><span id="local-6989586621681026674"><span class="annot"><span class="annottext">lits :: [CmmLit]
</span><a href="#local-6989586621681026674"><span class="hs-identifier hs-var hs-var">lits</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Integer -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#mkWordCLit"><span class="hs-identifier hs-var">mkWordCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026679"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026682"><span class="hs-identifier hs-var">n_bits</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-373"></span><span>         </span><span class="annot"><span class="annottext">CmmLit -&gt; [CmmLit] -&gt; [CmmLit]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">(StgWord -&gt; CmmLit) -&gt; Bitmap -&gt; [CmmLit]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; StgWord -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#mkStgWordCLit"><span class="hs-identifier hs-var">mkStgWordCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026679"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Bitmap
</span><a href="#local-6989586621681026669"><span class="hs-identifier hs-var">bitmap</span></a></span><span>
</span><span id="line-374"></span><span>      </span><span class="hs-comment">-- The first word is the size.  The structure must match</span><span>
</span><span id="line-375"></span><span>      </span><span class="hs-comment">-- StgLargeBitmap in includes/rts/storage/InfoTable.h</span><span>
</span><span id="line-376"></span><span>
</span><span id="line-377"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-378"></span><span class="hs-comment">--</span><span>
</span><span id="line-379"></span><span class="hs-comment">--      Generating a standard info table</span><span>
</span><span id="line-380"></span><span class="hs-comment">--</span><span>
</span><span id="line-381"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-382"></span><span>
</span><span id="line-383"></span><span class="hs-comment">-- The standard bits of an info table.  This part of the info table</span><span>
</span><span id="line-384"></span><span class="hs-comment">-- corresponds to the StgInfoTable type defined in</span><span>
</span><span id="line-385"></span><span class="hs-comment">-- includes/rts/storage/InfoTables.h.</span><span>
</span><span id="line-386"></span><span class="hs-comment">--</span><span>
</span><span id="line-387"></span><span class="hs-comment">-- Its shape varies with ticky/profiling/tables next to code etc</span><span>
</span><span id="line-388"></span><span class="hs-comment">-- so we can't use constant offsets from Constants</span><span>
</span><span id="line-389"></span><span>
</span><span id="line-390"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkStdInfoTable"><span class="hs-identifier hs-type">mkStdInfoTable</span></a></span><span>
</span><span id="line-391"></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span>
</span><span id="line-392"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">)</span><span>   </span><span class="hs-comment">-- Closure type descr and closure descr  (profiling)</span><span>
</span><span id="line-393"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>               </span><span class="hs-comment">-- Closure RTS tag</span><span>
</span><span id="line-394"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>            </span><span class="hs-comment">-- SRT length</span><span>
</span><span id="line-395"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span>            </span><span class="hs-comment">-- layout field</span><span>
</span><span id="line-396"></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-397"></span><span>
</span><span id="line-398"></span><span id="mkStdInfoTable"><span class="annot"><span class="annottext">mkStdInfoTable :: DynFlags
-&gt; (CmmLit, CmmLit) -&gt; WordOff -&gt; CmmLit -&gt; CmmLit -&gt; [CmmLit]
</span><a href="GHC.Cmm.Info.html#mkStdInfoTable"><span class="hs-identifier hs-var hs-var">mkStdInfoTable</span></a></span></span><span> </span><span id="local-6989586621681026654"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026654"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026653"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026653"><span class="hs-identifier hs-var">type_descr</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026652"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026652"><span class="hs-identifier hs-var">closure_descr</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681026651"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026651"><span class="hs-identifier hs-var">cl_type</span></a></span></span><span> </span><span id="local-6989586621681026650"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026650"><span class="hs-identifier hs-var">srt</span></a></span></span><span> </span><span id="local-6989586621681026649"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026649"><span class="hs-identifier hs-var">layout_lit</span></a></span></span><span>
</span><span id="line-399"></span><span> </span><span class="hs-glyph">=</span><span>      </span><span class="hs-comment">-- Parallel revertible-black hole field</span><span>
</span><span id="line-400"></span><span>    </span><span class="annot"><span class="annottext">[CmmLit]
</span><a href="#local-6989586621681026648"><span class="hs-identifier hs-var">prof_info</span></a></span><span>
</span><span id="line-401"></span><span>        </span><span class="hs-comment">-- Ticky info (none at present)</span><span>
</span><span id="line-402"></span><span>        </span><span class="hs-comment">-- Debug info (none at present)</span><span>
</span><span id="line-403"></span><span> </span><span class="annot"><span class="annottext">[CmmLit] -&gt; [CmmLit] -&gt; [CmmLit]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026649"><span class="hs-identifier hs-var">layout_lit</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026647"><span class="hs-identifier hs-var">tag</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026650"><span class="hs-identifier hs-var">srt</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-404"></span><span>
</span><span id="line-405"></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-406"></span><span>    </span><span id="local-6989586621681026646"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026646"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026654"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-407"></span><span>    </span><span id="local-6989586621681026648"><span class="annot"><span class="annottext">prof_info :: [CmmLit]
</span><a href="#local-6989586621681026648"><span class="hs-identifier hs-var hs-var">prof_info</span></a></span></span><span>
</span><span id="line-408"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Bool
</span><a href="GHC.Driver.Session.html#sccProfilingEnabled"><span class="hs-identifier hs-var">sccProfilingEnabled</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026654"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026653"><span class="hs-identifier hs-var">type_descr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026652"><span class="hs-identifier hs-var">closure_descr</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-409"></span><span>        </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-410"></span><span>
</span><span id="line-411"></span><span>    </span><span id="local-6989586621681026647"><span class="annot"><span class="annottext">tag :: CmmLit
</span><a href="#local-6989586621681026647"><span class="hs-identifier hs-var hs-var">tag</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026651"><span class="hs-identifier hs-var">cl_type</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#halfWordWidth"><span class="hs-identifier hs-var">halfWordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026646"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-412"></span><span>
</span><span id="line-413"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-414"></span><span class="hs-comment">--</span><span>
</span><span id="line-415"></span><span class="hs-comment">--      Making string literals</span><span>
</span><span id="line-416"></span><span class="hs-comment">--</span><span>
</span><span id="line-417"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-418"></span><span>
</span><span id="line-419"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkProfLits"><span class="hs-identifier hs-type">mkProfLits</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#ProfilingInfo"><span class="hs-identifier hs-type">ProfilingInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Supply.html#UniqSM"><span class="hs-identifier hs-type">UniqSM</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Cmm.html#RawCmmDecl"><span class="hs-identifier hs-type">RawCmmDecl</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-420"></span><span id="mkProfLits"><span class="annot"><span class="annottext">mkProfLits :: Platform -&gt; ProfilingInfo -&gt; UniqSM ((CmmLit, CmmLit), RawCmmGroup)
</span><a href="GHC.Cmm.Info.html#mkProfLits"><span class="hs-identifier hs-var hs-var">mkProfLits</span></a></span></span><span> </span><span id="local-6989586621681026642"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026642"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="annot"><span class="annottext">ProfilingInfo
</span><a href="GHC.Cmm.html#NoProfilingInfo"><span class="hs-identifier hs-var">NoProfilingInfo</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((CmmLit, CmmLit), RawCmmGroup)
-&gt; UniqSM ((CmmLit, CmmLit), RawCmmGroup)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#zeroCLit"><span class="hs-identifier hs-var">zeroCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026642"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmLit
</span><a href="GHC.Cmm.Utils.html#zeroCLit"><span class="hs-identifier hs-var">zeroCLit</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026642"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-421"></span><span class="annot"><a href="GHC.Cmm.Info.html#mkProfLits"><span class="hs-identifier hs-var">mkProfLits</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#ProfilingInfo"><span class="hs-identifier hs-type">ProfilingInfo</span></a></span><span> </span><span id="local-6989586621681026639"><span class="annot"><span class="annottext">ConstrDescription
</span><a href="#local-6989586621681026639"><span class="hs-identifier hs-var">td</span></a></span></span><span> </span><span id="local-6989586621681026638"><span class="annot"><span class="annottext">ConstrDescription
</span><a href="#local-6989586621681026638"><span class="hs-identifier hs-var">cd</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-422"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span class="hs-special">{</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026637"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026637"><span class="hs-identifier hs-var">td_lit</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026636"><span class="annot"><span class="annottext">GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
</span><a href="#local-6989586621681026636"><span class="hs-identifier hs-var">td_decl</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ConstrDescription
-&gt; UniqSM
     (CmmLit,
      GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph)
forall info stmt.
ConstrDescription
-&gt; UniqSM (CmmLit, GenCmmDecl RawCmmStatics info stmt)
</span><a href="GHC.Cmm.Info.html#newStringLit"><span class="hs-identifier hs-var">newStringLit</span></a></span><span> </span><span class="annot"><span class="annottext">ConstrDescription
</span><a href="#local-6989586621681026639"><span class="hs-identifier hs-var">td</span></a></span><span>
</span><span id="line-423"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="hs-special">(</span><span id="local-6989586621681026635"><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026635"><span class="hs-identifier hs-var">cd_lit</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026634"><span class="annot"><span class="annottext">GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
</span><a href="#local-6989586621681026634"><span class="hs-identifier hs-var">cd_decl</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">ConstrDescription
-&gt; UniqSM
     (CmmLit,
      GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph)
forall info stmt.
ConstrDescription
-&gt; UniqSM (CmmLit, GenCmmDecl RawCmmStatics info stmt)
</span><a href="GHC.Cmm.Info.html#newStringLit"><span class="hs-identifier hs-var">newStringLit</span></a></span><span> </span><span class="annot"><span class="annottext">ConstrDescription
</span><a href="#local-6989586621681026638"><span class="hs-identifier hs-var">cd</span></a></span><span>
</span><span id="line-424"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="annot"><span class="annottext">((CmmLit, CmmLit), RawCmmGroup)
-&gt; UniqSM ((CmmLit, CmmLit), RawCmmGroup)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026637"><span class="hs-identifier hs-var">td_lit</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">CmmLit
</span><a href="#local-6989586621681026635"><span class="hs-identifier hs-var">cd_lit</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
</span><a href="#local-6989586621681026636"><span class="hs-identifier hs-var">td_decl</span></a></span><span class="hs-special">,</span><span class="annot"><span class="annottext">GenCmmDecl RawCmmStatics (LabelMap RawCmmStatics) CmmGraph
</span><a href="#local-6989586621681026634"><span class="hs-identifier hs-var">cd_decl</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-425"></span><span>
</span><span id="line-426"></span><span id="local-6989586621681027041"><span id="local-6989586621681027042"><span class="annot"><a href="GHC.Cmm.Info.html#newStringLit"><span class="hs-identifier hs-type">newStringLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../bytestring/src/Data.ByteString.Internal.html#ByteString"><span class="hs-identifier hs-type">ByteString</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Unique.Supply.html#UniqSM"><span class="hs-identifier hs-type">UniqSM</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-type">CmmLit</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.html#GenCmmDecl"><span class="hs-identifier hs-type">GenCmmDecl</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.html#RawCmmStatics"><span class="hs-identifier hs-type">RawCmmStatics</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681027042"><span class="hs-identifier hs-type">info</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681027041"><span class="hs-identifier hs-type">stmt</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-427"></span><span id="newStringLit"><span class="annot"><span class="annottext">newStringLit :: forall info stmt.
ConstrDescription
-&gt; UniqSM (CmmLit, GenCmmDecl RawCmmStatics info stmt)
</span><a href="GHC.Cmm.Info.html#newStringLit"><span class="hs-identifier hs-var hs-var">newStringLit</span></a></span></span><span> </span><span id="local-6989586621681026630"><span class="annot"><span class="annottext">ConstrDescription
</span><a href="#local-6989586621681026630"><span class="hs-identifier hs-var">bytes</span></a></span></span><span>
</span><span id="line-428"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span> </span><span class="hs-special">{</span><span> </span><span id="local-6989586621681026629"><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621681026629"><span class="hs-identifier hs-var">uniq</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">UniqSM Unique
forall (m :: * -&gt; *). MonadUnique m =&gt; m Unique
</span><a href="GHC.Types.Unique.Supply.html#getUniqueM"><span class="hs-identifier hs-var">getUniqueM</span></a></span><span>
</span><span id="line-429"></span><span>       </span><span class="hs-special">;</span><span> </span><span class="annot"><span class="annottext">(CmmLit, GenCmmDecl RawCmmStatics info stmt)
-&gt; UniqSM (CmmLit, GenCmmDecl RawCmmStatics info stmt)
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel
-&gt; ConstrDescription
-&gt; (CmmLit, GenCmmDecl RawCmmStatics info stmt)
forall (raw :: Bool) info stmt.
CLabel
-&gt; ConstrDescription
-&gt; (CmmLit, GenCmmDecl (GenCmmStatics raw) info stmt)
</span><a href="GHC.Cmm.Utils.html#mkByteStringCLit"><span class="hs-identifier hs-var">mkByteStringCLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Unique -&gt; CLabel
</span><a href="GHC.Cmm.CLabel.html#mkStringLitLabel"><span class="hs-identifier hs-var">mkStringLitLabel</span></a></span><span> </span><span class="annot"><span class="annottext">Unique
</span><a href="#local-6989586621681026629"><span class="hs-identifier hs-var">uniq</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">ConstrDescription
</span><a href="#local-6989586621681026630"><span class="hs-identifier hs-var">bytes</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-430"></span><span>
</span><span id="line-431"></span><span>
</span><span id="line-432"></span><span class="hs-comment">-- Misc utils</span><span>
</span><span id="line-433"></span><span>
</span><span id="line-434"></span><span class="hs-comment">-- | Value of the srt field of an info table when using an StgLargeSRT</span><span>
</span><span id="line-435"></span><span class="annot"><a href="GHC.Cmm.Info.html#srtEscape"><span class="hs-identifier hs-type">srtEscape</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#StgHalfWord"><span class="hs-identifier hs-type">StgHalfWord</span></a></span><span>
</span><span id="line-436"></span><span id="srtEscape"><span class="annot"><span class="annottext">srtEscape :: Platform -&gt; StgHalfWord
</span><a href="GHC.Cmm.Info.html#srtEscape"><span class="hs-identifier hs-var hs-var">srtEscape</span></a></span></span><span> </span><span id="local-6989586621681026626"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026626"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Integer -&gt; StgHalfWord
</span><a href="GHC.Runtime.Heap.Layout.html#toStgHalfWord"><span class="hs-identifier hs-var">toStgHalfWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026626"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">-</span><span class="annot"><span class="annottext">Integer
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>
</span><span id="line-437"></span><span>
</span><span id="line-438"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-439"></span><span class="hs-comment">--</span><span>
</span><span id="line-440"></span><span class="hs-comment">--      Accessing fields of an info table</span><span>
</span><span id="line-441"></span><span class="hs-comment">--</span><span>
</span><span id="line-442"></span><span class="hs-comment">-------------------------------------------------------------------------</span><span>
</span><span id="line-443"></span><span>
</span><span id="line-444"></span><span class="hs-comment">-- | Wrap a 'CmmExpr' in an alignment check when @-falignment-sanitisation@ is</span><span>
</span><span id="line-445"></span><span class="hs-comment">-- enabled.</span><span>
</span><span id="line-446"></span><span class="annot"><a href="GHC.Cmm.Info.html#wordAligned"><span class="hs-identifier hs-type">wordAligned</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-447"></span><span id="wordAligned"><span class="annot"><span class="annottext">wordAligned :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#wordAligned"><span class="hs-identifier hs-var hs-var">wordAligned</span></a></span></span><span> </span><span id="local-6989586621681026624"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026624"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026623"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026623"><span class="hs-identifier hs-var">e</span></a></span></span><span>
</span><span id="line-448"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">GeneralFlag -&gt; DynFlags -&gt; Bool
</span><a href="GHC.Driver.Session.html#gopt"><span class="hs-identifier hs-var">gopt</span></a></span><span> </span><span class="annot"><span class="annottext">GeneralFlag
</span><a href="GHC.Driver.Flags.html#Opt_AlignmentSanitisation"><span class="hs-identifier hs-var">Opt_AlignmentSanitisation</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026624"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-449"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff -&gt; Width -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#MO_AlignmentCheck"><span class="hs-identifier hs-var">MO_AlignmentCheck</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; WordOff
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSizeInBytes"><span class="hs-identifier hs-var">platformWordSizeInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026617"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026617"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026623"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-450"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-451"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026623"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-452"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026617"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026617"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026624"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-453"></span><span>
</span><span id="line-454"></span><span class="annot"><a href="GHC.Cmm.Info.html#closureInfoPtr"><span class="hs-identifier hs-type">closureInfoPtr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-455"></span><span class="hs-comment">-- Takes a closure pointer and returns the info table pointer</span><span>
</span><span id="line-456"></span><span id="closureInfoPtr"><span class="annot"><span class="annottext">closureInfoPtr :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#closureInfoPtr"><span class="hs-identifier hs-var hs-var">closureInfoPtr</span></a></span></span><span> </span><span id="local-6989586621681026616"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026616"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026615"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026615"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-457"></span><span>    </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmType -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-var">CmmLoad</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#wordAligned"><span class="hs-identifier hs-var">wordAligned</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026616"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026615"><span class="hs-identifier hs-var">e</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026616"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-458"></span><span>
</span><span id="line-459"></span><span class="hs-comment">-- | Takes an info pointer (the first word of a closure) and returns its entry</span><span>
</span><span id="line-460"></span><span class="hs-comment">-- code</span><span>
</span><span id="line-461"></span><span class="annot"><a href="GHC.Cmm.Info.html#entryCode"><span class="hs-identifier hs-type">entryCode</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-boot/src/GHC.Platform.html#Platform"><span class="hs-identifier hs-type">Platform</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-462"></span><span id="entryCode"><span class="annot"><span class="annottext">entryCode :: Platform -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#entryCode"><span class="hs-identifier hs-var hs-var">entryCode</span></a></span></span><span> </span><span id="local-6989586621681026612"><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026612"><span class="hs-identifier hs-var">platform</span></a></span></span><span> </span><span id="local-6989586621681026611"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026611"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-463"></span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Bool
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformTablesNextToCode"><span class="hs-identifier hs-var hs-var">platformTablesNextToCode</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026612"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-464"></span><span>      </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026611"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-465"></span><span>      </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmType -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-var">CmmLoad</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026611"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bWord"><span class="hs-identifier hs-var">bWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026612"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-466"></span><span>
</span><span id="line-467"></span><span class="annot"><a href="GHC.Cmm.Info.html#getConstrTag"><span class="hs-identifier hs-type">getConstrTag</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-468"></span><span class="hs-comment">-- Takes a closure pointer, and return the *zero-indexed*</span><span>
</span><span id="line-469"></span><span class="hs-comment">-- constructor tag obtained from the info table</span><span>
</span><span id="line-470"></span><span class="hs-comment">-- This lives in the SRT field of the info table</span><span>
</span><span id="line-471"></span><span class="hs-comment">-- (constructors don't need SRTs).</span><span>
</span><span id="line-472"></span><span id="getConstrTag"><span class="annot"><span class="annottext">getConstrTag :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#getConstrTag"><span class="hs-identifier hs-var hs-var">getConstrTag</span></a></span></span><span> </span><span id="local-6989586621681026610"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026610"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026609"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026609"><span class="hs-identifier hs-var">closure_ptr</span></a></span></span><span>
</span><span id="line-473"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#MO_UU_Conv"><span class="hs-identifier hs-var">MO_UU_Conv</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#halfWordWidth"><span class="hs-identifier hs-var">halfWordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026607"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026607"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#infoTableConstrTag"><span class="hs-identifier hs-var">infoTableConstrTag</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026610"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026606"><span class="hs-identifier hs-var">info_table</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-474"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-475"></span><span>    </span><span id="local-6989586621681026606"><span class="annot"><span class="annottext">info_table :: CmmExpr
</span><a href="#local-6989586621681026606"><span class="hs-identifier hs-var hs-var">info_table</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#infoTable"><span class="hs-identifier hs-var">infoTable</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026610"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#closureInfoPtr"><span class="hs-identifier hs-var">closureInfoPtr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026610"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026609"><span class="hs-identifier hs-var">closure_ptr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-476"></span><span>    </span><span id="local-6989586621681026607"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026607"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026610"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-477"></span><span>
</span><span id="line-478"></span><span class="annot"><a href="GHC.Cmm.Info.html#cmmGetClosureType"><span class="hs-identifier hs-type">cmmGetClosureType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-479"></span><span class="hs-comment">-- Takes a closure pointer, and return the closure type</span><span>
</span><span id="line-480"></span><span class="hs-comment">-- obtained from the info table</span><span>
</span><span id="line-481"></span><span id="cmmGetClosureType"><span class="annot"><span class="annottext">cmmGetClosureType :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#cmmGetClosureType"><span class="hs-identifier hs-var hs-var">cmmGetClosureType</span></a></span></span><span> </span><span id="local-6989586621681026605"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026605"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026604"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026604"><span class="hs-identifier hs-var">closure_ptr</span></a></span></span><span>
</span><span id="line-482"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; Width -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#MO_UU_Conv"><span class="hs-identifier hs-var">MO_UU_Conv</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#halfWordWidth"><span class="hs-identifier hs-var">halfWordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026603"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026603"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#infoTableClosureType"><span class="hs-identifier hs-var">infoTableClosureType</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026605"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026602"><span class="hs-identifier hs-var">info_table</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-483"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-484"></span><span>    </span><span id="local-6989586621681026602"><span class="annot"><span class="annottext">info_table :: CmmExpr
</span><a href="#local-6989586621681026602"><span class="hs-identifier hs-var hs-var">info_table</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#infoTable"><span class="hs-identifier hs-var">infoTable</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026605"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#closureInfoPtr"><span class="hs-identifier hs-var">closureInfoPtr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026605"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026604"><span class="hs-identifier hs-var">closure_ptr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-485"></span><span>    </span><span id="local-6989586621681026603"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026603"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026605"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-486"></span><span>
</span><span id="line-487"></span><span class="annot"><a href="GHC.Cmm.Info.html#infoTable"><span class="hs-identifier hs-type">infoTable</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-488"></span><span class="hs-comment">-- Takes an info pointer (the first word of a closure)</span><span>
</span><span id="line-489"></span><span class="hs-comment">-- and returns a pointer to the first word of the standard-form</span><span>
</span><span id="line-490"></span><span class="hs-comment">-- info table, excluding the entry-code word (if present)</span><span>
</span><span id="line-491"></span><span id="infoTable"><span class="annot"><span class="annottext">infoTable :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#infoTable"><span class="hs-identifier hs-var hs-var">infoTable</span></a></span></span><span> </span><span id="local-6989586621681026601"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026601"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026600"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026600"><span class="hs-identifier hs-var">info_ptr</span></a></span></span><span>
</span><span id="line-492"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Bool
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformTablesNextToCode"><span class="hs-identifier hs-var hs-var">platformTablesNextToCode</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026599"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; WordOff -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetB"><span class="hs-identifier hs-var">cmmOffsetB</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026599"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026600"><span class="hs-identifier hs-var">info_ptr</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">-</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdInfoTableSizeB"><span class="hs-identifier hs-var">stdInfoTableSizeB</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026601"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-493"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; WordOff -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetW"><span class="hs-identifier hs-var">cmmOffsetW</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026599"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026600"><span class="hs-identifier hs-var">info_ptr</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">1</span></span><span> </span><span class="hs-comment">-- Past the entry code pointer</span><span>
</span><span id="line-494"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026599"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026599"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026601"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-495"></span><span>
</span><span id="line-496"></span><span class="annot"><a href="GHC.Cmm.Info.html#infoTableConstrTag"><span class="hs-identifier hs-type">infoTableConstrTag</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-497"></span><span class="hs-comment">-- Takes an info table pointer (from infoTable) and returns the constr tag</span><span>
</span><span id="line-498"></span><span class="hs-comment">-- field of the info table (same as the srt_bitmap field)</span><span>
</span><span id="line-499"></span><span id="infoTableConstrTag"><span class="annot"><span class="annottext">infoTableConstrTag :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#infoTableConstrTag"><span class="hs-identifier hs-var hs-var">infoTableConstrTag</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#infoTableSrtBitmap"><span class="hs-identifier hs-var">infoTableSrtBitmap</span></a></span><span>
</span><span id="line-500"></span><span>
</span><span id="line-501"></span><span class="annot"><a href="GHC.Cmm.Info.html#infoTableSrtBitmap"><span class="hs-identifier hs-type">infoTableSrtBitmap</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-502"></span><span class="hs-comment">-- Takes an info table pointer (from infoTable) and returns the srt_bitmap</span><span>
</span><span id="line-503"></span><span class="hs-comment">-- field of the info table</span><span>
</span><span id="line-504"></span><span id="infoTableSrtBitmap"><span class="annot"><span class="annottext">infoTableSrtBitmap :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#infoTableSrtBitmap"><span class="hs-identifier hs-var hs-var">infoTableSrtBitmap</span></a></span></span><span> </span><span id="local-6989586621681026596"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026596"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026595"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026595"><span class="hs-identifier hs-var">info_tbl</span></a></span></span><span>
</span><span id="line-505"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmType -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-var">CmmLoad</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; WordOff -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetB"><span class="hs-identifier hs-var">cmmOffsetB</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026594"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026595"><span class="hs-identifier hs-var">info_tbl</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdSrtBitmapOffset"><span class="hs-identifier hs-var">stdSrtBitmapOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026596"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bHalfWord"><span class="hs-identifier hs-var">bHalfWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026594"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-506"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026594"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026594"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026596"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-507"></span><span>
</span><span id="line-508"></span><span class="annot"><a href="GHC.Cmm.Info.html#infoTableClosureType"><span class="hs-identifier hs-type">infoTableClosureType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-509"></span><span class="hs-comment">-- Takes an info table pointer (from infoTable) and returns the closure type</span><span>
</span><span id="line-510"></span><span class="hs-comment">-- field of the info table.</span><span>
</span><span id="line-511"></span><span id="infoTableClosureType"><span class="annot"><span class="annottext">infoTableClosureType :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#infoTableClosureType"><span class="hs-identifier hs-var hs-var">infoTableClosureType</span></a></span></span><span> </span><span id="local-6989586621681026592"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026592"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026591"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026591"><span class="hs-identifier hs-var">info_tbl</span></a></span></span><span>
</span><span id="line-512"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmType -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-var">CmmLoad</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; WordOff -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetB"><span class="hs-identifier hs-var">cmmOffsetB</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026590"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026591"><span class="hs-identifier hs-var">info_tbl</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdClosureTypeOffset"><span class="hs-identifier hs-var">stdClosureTypeOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026592"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bHalfWord"><span class="hs-identifier hs-var">bHalfWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026590"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-513"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026590"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026590"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026592"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-514"></span><span>
</span><span id="line-515"></span><span class="annot"><a href="GHC.Cmm.Info.html#infoTablePtrs"><span class="hs-identifier hs-type">infoTablePtrs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-516"></span><span id="infoTablePtrs"><span class="annot"><span class="annottext">infoTablePtrs :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#infoTablePtrs"><span class="hs-identifier hs-var hs-var">infoTablePtrs</span></a></span></span><span> </span><span id="local-6989586621681026589"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026589"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026588"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026588"><span class="hs-identifier hs-var">info_tbl</span></a></span></span><span>
</span><span id="line-517"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmType -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-var">CmmLoad</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; WordOff -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetB"><span class="hs-identifier hs-var">cmmOffsetB</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026587"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026588"><span class="hs-identifier hs-var">info_tbl</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdPtrsOffset"><span class="hs-identifier hs-var">stdPtrsOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026589"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bHalfWord"><span class="hs-identifier hs-var">bHalfWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026587"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-518"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026587"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026587"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026589"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-519"></span><span>
</span><span id="line-520"></span><span class="annot"><a href="GHC.Cmm.Info.html#infoTableNonPtrs"><span class="hs-identifier hs-type">infoTableNonPtrs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-521"></span><span id="infoTableNonPtrs"><span class="annot"><span class="annottext">infoTableNonPtrs :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#infoTableNonPtrs"><span class="hs-identifier hs-var hs-var">infoTableNonPtrs</span></a></span></span><span> </span><span id="local-6989586621681026586"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026586"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026585"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026585"><span class="hs-identifier hs-var">info_tbl</span></a></span></span><span>
</span><span id="line-522"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmType -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-var">CmmLoad</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; WordOff -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetB"><span class="hs-identifier hs-var">cmmOffsetB</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026584"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026585"><span class="hs-identifier hs-var">info_tbl</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdNonPtrsOffset"><span class="hs-identifier hs-var">stdNonPtrsOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026586"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#bHalfWord"><span class="hs-identifier hs-var">bHalfWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026584"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-523"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026584"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026584"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026586"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-524"></span><span>
</span><span id="line-525"></span><span class="annot"><a href="GHC.Cmm.Info.html#funInfoTable"><span class="hs-identifier hs-type">funInfoTable</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-526"></span><span class="hs-comment">-- Takes the info pointer of a function,</span><span>
</span><span id="line-527"></span><span class="hs-comment">-- and returns a pointer to the first word of the StgFunInfoExtra struct</span><span>
</span><span id="line-528"></span><span class="hs-comment">-- in the info table.</span><span>
</span><span id="line-529"></span><span id="funInfoTable"><span class="annot"><span class="annottext">funInfoTable :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#funInfoTable"><span class="hs-identifier hs-var hs-var">funInfoTable</span></a></span></span><span> </span><span id="local-6989586621681026583"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026583"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026582"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026582"><span class="hs-identifier hs-var">info_ptr</span></a></span></span><span>
</span><span id="line-530"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Bool
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformTablesNextToCode"><span class="hs-identifier hs-var hs-var">platformTablesNextToCode</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026581"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-531"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; WordOff -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetB"><span class="hs-identifier hs-var">cmmOffsetB</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026581"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026582"><span class="hs-identifier hs-var">info_ptr</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">-</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdInfoTableSizeB"><span class="hs-identifier hs-var">stdInfoTableSizeB</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026583"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Driver.Session.html#sIZEOF_StgFunInfoExtraRev"><span class="hs-identifier hs-var">sIZEOF_StgFunInfoExtraRev</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026583"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-532"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-533"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; WordOff -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmOffsetW"><span class="hs-identifier hs-var">cmmOffsetW</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026581"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026582"><span class="hs-identifier hs-var">info_ptr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">1</span></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdInfoTableSizeW"><span class="hs-identifier hs-var">stdInfoTableSizeW</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026583"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-534"></span><span>                                  </span><span class="hs-comment">-- Past the entry code pointer</span><span>
</span><span id="line-535"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-536"></span><span>    </span><span id="local-6989586621681026581"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026581"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026583"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-537"></span><span>
</span><span id="line-538"></span><span class="hs-comment">-- Takes the info pointer of a function, returns the function's arity</span><span>
</span><span id="line-539"></span><span class="annot"><a href="GHC.Cmm.Info.html#funInfoArity"><span class="hs-identifier hs-type">funInfoArity</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-540"></span><span id="funInfoArity"><span class="annot"><span class="annottext">funInfoArity :: DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#funInfoArity"><span class="hs-identifier hs-var hs-var">funInfoArity</span></a></span></span><span> </span><span id="local-6989586621681026578"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026578"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681026577"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026577"><span class="hs-identifier hs-var">iptr</span></a></span></span><span>
</span><span id="line-541"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmToWord"><span class="hs-identifier hs-var">cmmToWord</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026575"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; CmmType -&gt; CmmExpr -&gt; WordOff -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmLoadIndex"><span class="hs-identifier hs-var">cmmLoadIndex</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026575"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">CmmType
</span><a href="#local-6989586621681026573"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026572"><span class="hs-identifier hs-var">fun_info</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026571"><span class="hs-identifier hs-var">offset</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Integral a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Real.html#div"><span class="hs-operator hs-var">`div`</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026569"><span class="hs-identifier hs-var">rep_bytes</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-542"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-543"></span><span>   </span><span id="local-6989586621681026575"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026575"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026578"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-544"></span><span>   </span><span id="local-6989586621681026572"><span class="annot"><span class="annottext">fun_info :: CmmExpr
</span><a href="#local-6989586621681026572"><span class="hs-identifier hs-var hs-var">fun_info</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; CmmExpr -&gt; CmmExpr
</span><a href="GHC.Cmm.Info.html#funInfoTable"><span class="hs-identifier hs-var">funInfoTable</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026578"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681026577"><span class="hs-identifier hs-var">iptr</span></a></span><span>
</span><span id="line-545"></span><span>   </span><span id="local-6989586621681026573"><span class="annot"><span class="annottext">rep :: CmmType
</span><a href="#local-6989586621681026573"><span class="hs-identifier hs-var hs-var">rep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Width -&gt; CmmType
</span><a href="GHC.Cmm.Type.html#cmmBits"><span class="hs-identifier hs-var">cmmBits</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">WordOff -&gt; Width
</span><a href="GHC.Cmm.Type.html#widthFromBytes"><span class="hs-identifier hs-var">widthFromBytes</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026569"><span class="hs-identifier hs-var">rep_bytes</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-546"></span><span>   </span><span id="local-6989586621681026566"><span class="annot"><span class="annottext">tablesNextToCode :: Bool
</span><a href="#local-6989586621681026566"><span class="hs-identifier hs-var hs-var">tablesNextToCode</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Bool
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformTablesNextToCode"><span class="hs-identifier hs-var hs-var">platformTablesNextToCode</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026575"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-547"></span><span>
</span><span id="line-548"></span><span>   </span><span class="hs-special">(</span><span id="local-6989586621681026569"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026569"><span class="hs-identifier hs-var">rep_bytes</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621681026571"><span class="annot"><span class="annottext">WordOff
</span><a href="#local-6989586621681026571"><span class="hs-identifier hs-var">offset</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-549"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621681026566"><span class="hs-identifier hs-var">tablesNextToCode</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="annottext">PlatformConstants -&gt; WordOff
</span><a href="GHC.Settings.html#pc_REP_StgFunInfoExtraRev_arity"><span class="hs-identifier hs-var hs-var">pc_REP_StgFunInfoExtraRev_arity</span></a></span><span> </span><span class="annot"><span class="annottext">PlatformConstants
</span><a href="#local-6989586621681026564"><span class="hs-identifier hs-var">pc</span></a></span><span>
</span><span id="line-550"></span><span>                         </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Driver.Session.html#oFFSET_StgFunInfoExtraRev_arity"><span class="hs-identifier hs-var">oFFSET_StgFunInfoExtraRev_arity</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026578"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-551"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="annottext">PlatformConstants -&gt; WordOff
</span><a href="GHC.Settings.html#pc_REP_StgFunInfoExtraFwd_arity"><span class="hs-identifier hs-var hs-var">pc_REP_StgFunInfoExtraFwd_arity</span></a></span><span> </span><span class="annot"><span class="annottext">PlatformConstants
</span><a href="#local-6989586621681026564"><span class="hs-identifier hs-var">pc</span></a></span><span>
</span><span id="line-552"></span><span>                         </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Driver.Session.html#oFFSET_StgFunInfoExtraFwd_arity"><span class="hs-identifier hs-var">oFFSET_StgFunInfoExtraFwd_arity</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026578"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-553"></span><span>
</span><span id="line-554"></span><span>   </span><span id="local-6989586621681026564"><span class="annot"><span class="annottext">pc :: PlatformConstants
</span><a href="#local-6989586621681026564"><span class="hs-identifier hs-var hs-var">pc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; PlatformConstants
</span><a href="GHC.Driver.Session.html#platformConstants"><span class="hs-identifier hs-var hs-var">platformConstants</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026578"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-555"></span><span>
</span><span id="line-556"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-557"></span><span class="hs-comment">--</span><span>
</span><span id="line-558"></span><span class="hs-comment">--      Info table sizes &amp; offsets</span><span>
</span><span id="line-559"></span><span class="hs-comment">--</span><span>
</span><span id="line-560"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-561"></span><span>
</span><span id="line-562"></span><span class="annot"><a href="GHC.Cmm.Info.html#stdInfoTableSizeW"><span class="hs-identifier hs-type">stdInfoTableSizeW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#WordOff"><span class="hs-identifier hs-type">WordOff</span></a></span><span>
</span><span id="line-563"></span><span class="hs-comment">-- The size of a standard info table varies with profiling/ticky etc,</span><span>
</span><span id="line-564"></span><span class="hs-comment">-- so we can't get it from Constants</span><span>
</span><span id="line-565"></span><span class="hs-comment">-- It must vary in sync with mkStdInfoTable</span><span>
</span><span id="line-566"></span><span id="stdInfoTableSizeW"><span class="annot"><span class="annottext">stdInfoTableSizeW :: DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdInfoTableSizeW"><span class="hs-identifier hs-var hs-var">stdInfoTableSizeW</span></a></span></span><span> </span><span id="local-6989586621681026559"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026559"><span class="hs-identifier hs-var">dflags</span></a></span></span><span>
</span><span id="line-567"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="GHC.Cmm.Info.html#fixedInfoTableSizeW"><span class="hs-identifier hs-var">fixedInfoTableSizeW</span></a></span><span>
</span><span id="line-568"></span><span>  </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Bool
</span><a href="GHC.Driver.Session.html#sccProfilingEnabled"><span class="hs-identifier hs-var">sccProfilingEnabled</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026559"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-569"></span><span>       </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="GHC.Cmm.Info.html#profInfoTableSizeW"><span class="hs-identifier hs-var">profInfoTableSizeW</span></a></span><span>
</span><span id="line-570"></span><span>       </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">0</span></span><span>
</span><span id="line-571"></span><span>
</span><span id="line-572"></span><span class="annot"><a href="GHC.Cmm.Info.html#fixedInfoTableSizeW"><span class="hs-identifier hs-type">fixedInfoTableSizeW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#WordOff"><span class="hs-identifier hs-type">WordOff</span></a></span><span>
</span><span id="line-573"></span><span id="fixedInfoTableSizeW"><span class="annot"><span class="annottext">fixedInfoTableSizeW :: WordOff
</span><a href="GHC.Cmm.Info.html#fixedInfoTableSizeW"><span class="hs-identifier hs-var hs-var">fixedInfoTableSizeW</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">2</span></span><span> </span><span class="hs-comment">-- layout, type</span><span>
</span><span id="line-574"></span><span>
</span><span id="line-575"></span><span class="annot"><a href="GHC.Cmm.Info.html#profInfoTableSizeW"><span class="hs-identifier hs-type">profInfoTableSizeW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#WordOff"><span class="hs-identifier hs-type">WordOff</span></a></span><span>
</span><span id="line-576"></span><span id="profInfoTableSizeW"><span class="annot"><span class="annottext">profInfoTableSizeW :: WordOff
</span><a href="GHC.Cmm.Info.html#profInfoTableSizeW"><span class="hs-identifier hs-var hs-var">profInfoTableSizeW</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">2</span></span><span>
</span><span id="line-577"></span><span>
</span><span id="line-578"></span><span class="annot"><a href="GHC.Cmm.Info.html#maxStdInfoTableSizeW"><span class="hs-identifier hs-type">maxStdInfoTableSizeW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#WordOff"><span class="hs-identifier hs-type">WordOff</span></a></span><span>
</span><span id="line-579"></span><span id="maxStdInfoTableSizeW"><span class="annot"><span class="annottext">maxStdInfoTableSizeW :: WordOff
</span><a href="GHC.Cmm.Info.html#maxStdInfoTableSizeW"><span class="hs-identifier hs-var hs-var">maxStdInfoTableSizeW</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-580"></span><span>  </span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">1</span></span><span> </span><span class="hs-comment">{- entry, when !tablesNextToCode -}</span><span>
</span><span id="line-581"></span><span>  </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="GHC.Cmm.Info.html#fixedInfoTableSizeW"><span class="hs-identifier hs-var">fixedInfoTableSizeW</span></a></span><span>
</span><span id="line-582"></span><span>  </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><a href="GHC.Cmm.Info.html#profInfoTableSizeW"><span class="hs-identifier hs-var">profInfoTableSizeW</span></a></span><span>
</span><span id="line-583"></span><span>
</span><span id="line-584"></span><span class="annot"><a href="GHC.Cmm.Info.html#maxRetInfoTableSizeW"><span class="hs-identifier hs-type">maxRetInfoTableSizeW</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.StgToCmm.Types.html#WordOff"><span class="hs-identifier hs-type">WordOff</span></a></span><span>
</span><span id="line-585"></span><span id="maxRetInfoTableSizeW"><span class="annot"><span class="annottext">maxRetInfoTableSizeW :: WordOff
</span><a href="GHC.Cmm.Info.html#maxRetInfoTableSizeW"><span class="hs-identifier hs-var hs-var">maxRetInfoTableSizeW</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-586"></span><span>  </span><span class="annot"><span class="annottext">WordOff
</span><a href="GHC.Cmm.Info.html#maxStdInfoTableSizeW"><span class="hs-identifier hs-var">maxStdInfoTableSizeW</span></a></span><span>
</span><span id="line-587"></span><span>  </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">1</span></span><span> </span><span class="hs-comment">{- srt label -}</span><span>
</span><span id="line-588"></span><span>
</span><span id="line-589"></span><span class="annot"><a href="GHC.Cmm.Info.html#stdInfoTableSizeB"><span class="hs-identifier hs-type">stdInfoTableSizeB</span></a></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#ByteOff"><span class="hs-identifier hs-type">ByteOff</span></a></span><span>
</span><span id="line-590"></span><span id="stdInfoTableSizeB"><span class="annot"><span class="annottext">stdInfoTableSizeB :: DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdInfoTableSizeB"><span class="hs-identifier hs-var hs-var">stdInfoTableSizeB</span></a></span></span><span> </span><span id="local-6989586621681026557"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026557"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdInfoTableSizeW"><span class="hs-identifier hs-var">stdInfoTableSizeW</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026557"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSizeInBytes"><span class="hs-identifier hs-var">platformWordSizeInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026555"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-591"></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026555"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026555"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026557"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-592"></span><span>
</span><span id="line-593"></span><span class="annot"><a href="GHC.Cmm.Info.html#stdSrtBitmapOffset"><span class="hs-identifier hs-type">stdSrtBitmapOffset</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#ByteOff"><span class="hs-identifier hs-type">ByteOff</span></a></span><span>
</span><span id="line-594"></span><span class="hs-comment">-- Byte offset of the SRT bitmap half-word which is</span><span>
</span><span id="line-595"></span><span class="hs-comment">-- in the *higher-addressed* part of the type_lit</span><span>
</span><span id="line-596"></span><span id="stdSrtBitmapOffset"><span class="annot"><span class="annottext">stdSrtBitmapOffset :: DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdSrtBitmapOffset"><span class="hs-identifier hs-var hs-var">stdSrtBitmapOffset</span></a></span></span><span> </span><span id="local-6989586621681026554"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026554"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdInfoTableSizeB"><span class="hs-identifier hs-var">stdInfoTableSizeB</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026554"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff
</span><a href="GHC.Runtime.Heap.Layout.html#halfWordSize"><span class="hs-identifier hs-var">halfWordSize</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026552"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-597"></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026552"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026552"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026554"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-598"></span><span>
</span><span id="line-599"></span><span class="annot"><a href="GHC.Cmm.Info.html#stdClosureTypeOffset"><span class="hs-identifier hs-type">stdClosureTypeOffset</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#ByteOff"><span class="hs-identifier hs-type">ByteOff</span></a></span><span>
</span><span id="line-600"></span><span class="hs-comment">-- Byte offset of the closure type half-word</span><span>
</span><span id="line-601"></span><span id="stdClosureTypeOffset"><span class="annot"><span class="annottext">stdClosureTypeOffset :: DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdClosureTypeOffset"><span class="hs-identifier hs-var hs-var">stdClosureTypeOffset</span></a></span></span><span> </span><span id="local-6989586621681026551"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026551"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdInfoTableSizeB"><span class="hs-identifier hs-var">stdInfoTableSizeB</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026551"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSizeInBytes"><span class="hs-identifier hs-var">platformWordSizeInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026550"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-602"></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026550"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026550"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026551"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-603"></span><span>
</span><span id="line-604"></span><span class="annot"><a href="GHC.Cmm.Info.html#stdPtrsOffset"><span class="hs-identifier hs-type">stdPtrsOffset</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Cmm.Info.html#stdNonPtrsOffset"><span class="hs-identifier hs-type">stdNonPtrsOffset</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Runtime.Heap.Layout.html#ByteOff"><span class="hs-identifier hs-type">ByteOff</span></a></span><span>
</span><span id="line-605"></span><span id="stdPtrsOffset"><span class="annot"><span class="annottext">stdPtrsOffset :: DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdPtrsOffset"><span class="hs-identifier hs-var hs-var">stdPtrsOffset</span></a></span></span><span>    </span><span id="local-6989586621681026549"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026549"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdInfoTableSizeB"><span class="hs-identifier hs-var">stdInfoTableSizeB</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026549"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">2</span></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSizeInBytes"><span class="hs-identifier hs-var">platformWordSizeInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026548"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-606"></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026548"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026548"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026549"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-607"></span><span>
</span><span id="line-608"></span><span id="stdNonPtrsOffset"><span class="annot"><span class="annottext">stdNonPtrsOffset :: DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdNonPtrsOffset"><span class="hs-identifier hs-var hs-var">stdNonPtrsOffset</span></a></span></span><span> </span><span id="local-6989586621681026547"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026547"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdInfoTableSizeB"><span class="hs-identifier hs-var">stdInfoTableSizeB</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026547"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff
</span><span class="hs-number">2</span></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2A"><span class="hs-operator hs-var">*</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSizeInBytes"><span class="hs-identifier hs-var">platformWordSizeInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026546"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff
</span><a href="GHC.Runtime.Heap.Layout.html#halfWordSize"><span class="hs-identifier hs-var">halfWordSize</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026546"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-609"></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026546"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026546"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026547"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-610"></span><span>
</span><span id="line-611"></span><span class="annot"><a href="GHC.Cmm.Info.html#conInfoTableSizeB"><span class="hs-identifier hs-type">conInfoTableSizeB</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-612"></span><span id="conInfoTableSizeB"><span class="annot"><span class="annottext">conInfoTableSizeB :: DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#conInfoTableSizeB"><span class="hs-identifier hs-var hs-var">conInfoTableSizeB</span></a></span></span><span> </span><span id="local-6989586621681026545"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026545"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; WordOff
</span><a href="GHC.Cmm.Info.html#stdInfoTableSizeB"><span class="hs-identifier hs-var">stdInfoTableSizeB</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026545"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">WordOff -&gt; WordOff -&gt; WordOff
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; WordOff
</span><a href="../../ghc-boot/src/GHC.Platform.html#platformWordSizeInBytes"><span class="hs-identifier hs-var">platformWordSizeInBytes</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681026544"><span class="hs-identifier hs-var">platform</span></a></span><span>
</span><span id="line-613"></span><span>   </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621681026544"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681026544"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681026545"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-614"></span></pre></body></html>